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