👤

3750 pbinfo
Se consideră o listă liniară dublu înlănțuită, alocată dinamic, în care elementele sunt de tipul declarat mai jos:

struct nod{
int info;
nod * ant,*urm;
};
în care câmpul info memorează un număr întreg, câmpul ant memorează adresa elementului anterior al listei, iar campul urm memorează adresa elementului următor al listei.

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

void InserareInainteQ(nod *& prim,nod *& ultim, nod * q,int x);
care adaugă valoarea x inaintea nodului de adresa q al listei pentru care primul element are adresa memorată în pointerul prim si ultimul element are adresa memorata in pointerul ultim.

Restricții și precizări
numele funcției va fi InserareInainteQ;
pointerul q poate fi prim si ultim;
dacă lista nu conține niciun element, pointerul prim si ultim va avea valoarea NULL;
în toate cazurile, la ieșirea din apel prim va memora adresa primului element al listei, iar ultim va memora adresa ultimului element al listei.
structura care definește tipul nod a fost modificată. Solutiile mai vechi nu se mai compilează.
Important
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.


Răspuns :

Răspuns:
Salut! (*/ω\*)

Ai aici rezolvarea problemei #3750 de pe pbinfo

void InserareInainteQ(nod *&prim, nod *&ultim, nod *q, int x){

   nod *nou = new nod;

   nou -> info = x;

   if(prim == NULL){

       // lista este vida

       nou -> ant = nou -> urm  = NULL;

       prim = ultim = nou;

   }else if(q == prim){

       

       // inserez la inceputul listei

       nou -> urm = prim;

       nou -> ant = NULL;

       prim = nou;

   }else{

       nod *t = new nod;

       t = prim;

       while(t -> urm != q)

           t = t -> urm;

       // t este elementul din stanga celui memorat la adresa q

       nou -> urm = t -> urm;

       nou -> ant = t;

       t -> urm = nou;

   }

}

#copaceibrainly

Vă mulțumim că ați ales să vizitați site-ul nostru dedicat Informatică. Sperăm că informațiile disponibile v-au fost utile. Dacă aveți întrebări sau aveți nevoie de asistență suplimentară, vă rugăm să ne contactați. Revenirea dumneavoastră ne va bucura, iar pentru acces rapid, nu uitați să ne salvați la favorite!


En Trainingsy: Alte intrebari