1173 – FListă Numărare1: Difference between revisions

From Bitnami MediaWiki
Cristina94 (talk | contribs)
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: int numarare(nod * p); care determina și returnează numărul perechi de elemente consecutive e...
 
Cristina94 (talk | contribs)
 
Line 20: Line 20:


==Important==
==Important==
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.
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.



Latest revision as of 13:21, 1 April 2024

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 C++ cu următorul prototip:

   int numarare(nod * p);

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

Exemplu[edit | edit source]

Dacă lista contine valorile (1 6 6 4 5 5 5 1) funcția va returna valoarea 3.

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. 1173 FListaNumarare1

class Node:

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

def build_linked_list(values):

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

def numarare(p):

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

def main():

 values = [1, 6, 6, 4, 5, 5, 5, 1]
 head = build_linked_list(values)
 
 result = numarare(head)
 print("Numărul de perechi de elemente consecutive egale:", result)

if __name__ == "__main__":

 main()

</syntaxhighlight>