3789 – FListă Oglindire

From Bitnami MediaWiki

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

   void oglindire(nod * & p);

care oglindește nodurile din lista pentru care primul element are adresa memorată în pointerul p.

Restricţii şi precizări[edit | edit source]

numele funcției va fi oglindire se recomandă evitarea folosirii unor structuri de date suplimentare

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. 3789 FListaOglindire

class Nod:

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

def oglindire(p):

 anterior = None
 curent = p
 urmator = None
 while curent is not None:
   urmator = curent.urm
   curent.urm = anterior
   anterior = curent
   curent = urmator
 p = anterior  # Actualizăm referința către primul nod
 return p
  1. Funcție pentru afișarea listei

def afisare_lista(p):

 while p is not None:
   print(p.info, end=" ")
   p = p.urm
 print()
  1. Exemplu de utilizare

nod1 = Nod(1) nod2 = Nod(2) nod3 = Nod(3)

nod1.urm = nod2 nod2.urm = nod3

print("Lista initiala:") afisare_lista(nod1)

nod1 = oglindire(nod1)

print("Lista oglindita:") afisare_lista(nod1) </syntaxhighlight>