Informatică, întrebare adresată de sikesjack1, 8 ani în urmă

Buna! Ma puteti ajuta la problema asta? #1179 FListaInserare 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 natural, 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 inserare(nod * p, nod * q, int x); care inserează valoarea x după elementul cu adresa memorată în q din lista pentru care primul element are adresa memorată în pointerul p. 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. Mersi!

Răspunsuri la întrebare

Răspuns de MrCalibster
1

void inserare(nod * p,nod * q,int x)

{

nod* l=(nod*)malloc(sizeof(nod));

l->info=x;

l->urm=q->urm;

q->urm=l;

}

Se aloca pentru nodul nou spatiu in memorie( se poate face si cu functia new). I se atribuie valoare x dupa care se realizeaza legatura cu q. Prima data se face legatura cu urmatorul lui l pentru ca daca ultimele doua linii de cod s-ar inversa atunci q->urm fiind l , l ar arata spre el.

O problema mai practica ar fii sa adaugi o valoare dupa un nod cu o valoarea data de la tastura (fara sa-i stii adresa). Se face la fel, doar ca trebuie prima data cautat nodul respectiv pentru a se aplica algoritmul.

Alte întrebări interesante