1173 – FListă Numărare1

De la Universitas MediaWiki
Versiunea pentru tipărire nu mai este suportată și poate avea erori de randare. Vă rugăm să vă actualizați bookmarkurile browserului și să folosiți funcția implicită de tipărire a browserului.

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

#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

# 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()