<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=1476_%E2%80%93_Fsortare</id>
	<title>1476 – Fsortare - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=1476_%E2%80%93_Fsortare"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1476_%E2%80%93_Fsortare&amp;action=history"/>
	<updated>2026-05-01T03:42:44Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1476_%E2%80%93_Fsortare&amp;diff=9773&amp;oldid=prev</id>
		<title>Cristina94: Pagină nouă: ==Enunţ== Se consideră o listă liniară simplu înlănțuită, alocată dinamic, în care elementele sunt de tipul declarat mai jos:      struct nod{       int info;       nod *urm;     };  în care câmpul info memorează un număr întreg, iar câmpul urm memorează adresa următorului element al listei.  ==Cerința== Să se scrie o funcție C++ cu următorul prototip:    void sortareCrescator(nod *&amp;prim)  care sortează crescător elementele listei al cărei prim elemen...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1476_%E2%80%93_Fsortare&amp;diff=9773&amp;oldid=prev"/>
		<updated>2024-05-13T13:10:53Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: ==Enunţ== Se consideră o listă liniară simplu înlănțuită, alocată dinamic, în care elementele sunt de tipul declarat mai jos:      struct nod{       int info;       nod *urm;     };  în care câmpul info memorează un număr întreg, iar câmpul urm memorează adresa următorului element al listei.  ==Cerința== Să se scrie o funcție C++ cu următorul prototip:    void sortareCrescator(nod *&amp;amp;prim)  care sortează crescător elementele listei al cărei prim elemen...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Enunţ==&lt;br /&gt;
Se consideră o listă liniară simplu înlănțuită, alocată dinamic, în care elementele sunt de tipul declarat mai jos:&lt;br /&gt;
&lt;br /&gt;
    struct nod{&lt;br /&gt;
      int info;&lt;br /&gt;
      nod *urm;&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
în care câmpul info memorează un număr întreg, iar câmpul urm memorează adresa următorului element al listei.&lt;br /&gt;
&lt;br /&gt;
==Cerința==&lt;br /&gt;
Să se scrie o funcție C++ cu următorul prototip:&lt;br /&gt;
&lt;br /&gt;
  void sortareCrescator(nod *&amp;amp;prim)&lt;br /&gt;
&lt;br /&gt;
care sortează crescător elementele listei al cărei prim element are adresa memorată în prim.&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări==&lt;br /&gt;
*numele funcției va fi sortareCrescator&lt;br /&gt;
*lista va conține cel puțin 3 elemente&lt;br /&gt;
*rezolvarea se va face in python&lt;br /&gt;
&lt;br /&gt;
==Exemplu==&lt;br /&gt;
Dacă lista este formată din valorile (5, 3, 9, 4, 2, 12), după apelul funcţiei ea va conţine elementele (2, 3, 4, 5, 9, 12).&lt;br /&gt;
&lt;br /&gt;
==Rezolvare==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#1476 FSortare&lt;br /&gt;
&lt;br /&gt;
class Node:&lt;br /&gt;
    def __init__(self, info):&lt;br /&gt;
        self.info = info&lt;br /&gt;
        self.next = None&lt;br /&gt;
&lt;br /&gt;
def create_linked_list(values):&lt;br /&gt;
    head = None&lt;br /&gt;
    tail = None&lt;br /&gt;
    for value in values:&lt;br /&gt;
        new_node = Node(value)&lt;br /&gt;
        if head is None:&lt;br /&gt;
            head = new_node&lt;br /&gt;
            tail = new_node&lt;br /&gt;
        else:&lt;br /&gt;
            tail.next = new_node&lt;br /&gt;
            tail = new_node&lt;br /&gt;
    return head&lt;br /&gt;
&lt;br /&gt;
def sortareCrescator(prim):&lt;br /&gt;
    # Funcție pentru inserarea unui nod într-o listă sortată&lt;br /&gt;
    def insert_sorted(head, new_node):&lt;br /&gt;
        if head is None or head.info &amp;gt;= new_node.info:&lt;br /&gt;
            new_node.next = head&lt;br /&gt;
            return new_node&lt;br /&gt;
&lt;br /&gt;
        current = head&lt;br /&gt;
        while current.next is not None and current.next.info &amp;lt; new_node.info:&lt;br /&gt;
            current = current.next&lt;br /&gt;
        &lt;br /&gt;
        new_node.next = current.next&lt;br /&gt;
        current.next = new_node&lt;br /&gt;
        return head&lt;br /&gt;
    &lt;br /&gt;
    # Inițializăm lista sortată ca fiind lista vidă&lt;br /&gt;
    sorted_list = None&lt;br /&gt;
    current = prim&lt;br /&gt;
    &lt;br /&gt;
    # Parcurgem lista inițială și inserăm fiecare nod în lista sortată&lt;br /&gt;
    while current is not None:&lt;br /&gt;
        sorted_list = insert_sorted(sorted_list, Node(current.info))&lt;br /&gt;
        current = current.next&lt;br /&gt;
    &lt;br /&gt;
    # Copiem lista sortată înapoi în lista inițială&lt;br /&gt;
    current = prim&lt;br /&gt;
    sorted_current = sorted_list&lt;br /&gt;
    while sorted_current is not None:&lt;br /&gt;
        current.info = sorted_current.info&lt;br /&gt;
        current = current.next&lt;br /&gt;
        sorted_current = sorted_current.next&lt;br /&gt;
&lt;br /&gt;
# Funcție pentru citirea datelor de intrare de la tastatură&lt;br /&gt;
def read_input():&lt;br /&gt;
    values = input(&amp;quot;Introduceți valorile separate prin virgulă: &amp;quot;).split(&amp;#039;,&amp;#039;)&lt;br /&gt;
    return [int(value) for value in values if value.strip()]  # eliminăm spațiile și convertim în int&lt;br /&gt;
&lt;br /&gt;
# Testăm funcția&lt;br /&gt;
def print_list(head):&lt;br /&gt;
    current = head&lt;br /&gt;
    while current is not None:&lt;br /&gt;
        print(current.info, end=&amp;quot; &amp;quot;)&lt;br /&gt;
        current = current.next&lt;br /&gt;
    print()&lt;br /&gt;
&lt;br /&gt;
# Citim datele de intrare de la tastatură&lt;br /&gt;
values = read_input()&lt;br /&gt;
&lt;br /&gt;
# Cream lista liniară simplu înlănțuită folosind funcția create_linked_list&lt;br /&gt;
l = create_linked_list(values)&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Lista inițială:&amp;quot;)&lt;br /&gt;
print_list(l)&lt;br /&gt;
&lt;br /&gt;
# Sortăm lista&lt;br /&gt;
sortareCrescator(l)&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Lista sortată:&amp;quot;)&lt;br /&gt;
print_list(l)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cristina94</name></author>
	</entry>
</feed>