3789 – FListă Oglindire
De la Universitas MediaWiki
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 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
numele funcției va fi oglindire se recomandă evitarea folosirii unor structuri de date suplimentare
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
#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
# Funcție pentru afișarea listei
def afisare_lista(p):
while p is not None:
print(p.info, end=" ")
p = p.urm
print()
# 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)