1172 – FListă Numărare

From Bitnami MediaWiki

Enunţ[edit | edit source]

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[edit | edit source]

Să se scrie o funcție Python cu următorul prototip:

   int numarare(nod * p);

care determina și returnează numărul de elemente memorate în lista pentru care primul element are adresa memorată în pointerul p.

Important[edit | edit source]

Se va rezolva în python.

Soluţia propusă va conţine definiţia funcţiei cerute. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.

Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line>

  1. 1172 FListaNumarare

class Node:

 def __init__(self, info):
   self.info = info
   self.next = None

def create_linked_list(elements):

 if not elements:
   return None
 head = Node(elements[0])
 current = head
 for element in elements[1:]:
   current.next = Node(element)
   current = current.next
 return head

def numarare(p):

 count = 0
 current = p
 while current is not None:
   count += 1
   current = current.next
 return count
  1. Exemplu de utilizare:

def main():

 # Creăm o listă de elemente
 elements = [1, 2, 3, 4]
 # Creăm lista liniară simplu înlănțuită
 p = create_linked_list(elements)
 # Apelăm funcția numarare pentru a număra elementele listei
 result = numarare(p)
 print("Numărul de elemente în listă este:", result)

if __name__ == "__main__":

 main()

</syntaxhighlight>