1172 – FListă Numărare
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>
- 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
- 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>