1171 – FȘterge Primul Din Listă

From Bitnami MediaWiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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 stergePrimul(nod * & p);

care șterge primul element al unei liste; pointerul p are ca valoarea adresa primului element din listă – cel care va fi șters.

Restricţii şi precizări

numele funcției va fi stergePrimul dacă lista nu conține niciun element, pointerul p va avea valoarea NULL în toate cazurile, la ieșirea din apel p va memora adresa primului element al listei; dacă elementul șters este ultimul, p va avea valoarea NULL

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. 1171 FStergePrimulDinLista

class Nod:

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

def stergePrimul(p):

 if p is None:
   return
 
 p = p.urm
 return p

def main():

 # Citirea datelor de intrare de la tastatura
 N = int(input("Introduceti numarul de noduri: "))
 vals = [int(input(f"Introduceti valoarea pentru nodul {i + 1}: ")) for i in range(N)]
 # Crearea unei liste liniare simplu inlantuite
 noduri = [Nod(val) for val in vals]
 for i in range(N - 1):
   noduri[i].urm = noduri[i + 1]
 # Afisarea listei inainte de stergerea primului element
 print("Lista inainte de stergerea primului element:")
 current = noduri[0]
 while current is not None:
   print(current.info)
   current = current.urm
 # Stergerea primului element
 noduri[0] = stergePrimul(noduri[0])
 # Afisarea listei dupa stergerea primului element
 print("Lista dupa stergerea primului element:")
 current = noduri[0]
 while current is not None:
   print(current.info)
   current = current.urm

if __name__ == "__main__":

 main()

</syntaxhighlight>