1182 – FListă Interclasare3

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 natural, iar câmpul urm memorează adresa următorului element al listei.

Cerinţa

Să se scrie o funcție C++ cu următorul prototip:

   void inserare(nod * & p);

care inserează înaintea fiecărui element par al unei liste pentru care primul element are adresa memorată în pointerul p dublul acelui element.

Restricții și precizări

  • lista va conține cel puțin un element
  • la ieșirea din apel p va conține adresa primului element al listei
  • rezolvarea se va face în python

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

#1182 FListaInserare3
class Node:
  def __init__(self, info, next_node=None):
    self.info = info
    self.next = next_node

def inserare(p):
  prev = None
  current = p
  while current is not None:
    if current.info % 2 == 0:
      new_node = Node(current.info * 2)
      new_node.next = current
      if prev is not None:
        prev.next = new_node
      else:
        p = new_node  
      prev = new_node
      current = current.next
    else:
      prev = current
      current = current.next

def print_list(p):
  current = p
  while current is not None:
    print(current.info, end=" ")
    current = current.next
  print()

if __name__ == "__main__":
  values = [1, 2, 3, 4, 5]
  p = Node(values[0])  
  current = p
  for value in values[1:]:  
    current.next = Node(value)  
    current = current.next  

  print("Lista initiala:")
  print_list(p)

  inserare(p)

  print("Lista dupa inserare:")
  print_list(p)