1173 – FListă Numărare1

From Bitnami MediaWiki
Revision as of 13:21, 1 April 2024 by Cristina94 (talk | contribs) (→‎Important)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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 egale din lista pentru care primul element are adresa memorată în pointerul p.

Exemplu

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

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.

Rezolvare

<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>