3789 – FListă Oglindire: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: ==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: void oglindire(nod * & p); care oglindește nodurile din lista pentru care primul element are ad...
 
No edit summary
Tag: visualeditor
Line 21: Line 21:


==Important==
==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.
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.



Revision as of 13:22, 1 April 2024

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:

   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

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