Inserarea unui nou element in lista

Download Report

Transcript Inserarea unui nou element in lista

Inserarea unui nou element in lista
Inserarea unui nou element in lista
*Inaintea nodului cu valoare x
* Dupa nodul cu valoare x
* Pe pozitia k
Inserarea unui element inaintea primului nod
• Pasii:
• Se aloca memorie nodului
• Se scrie informatia in
nodul nou
• Nodul nou se leaga de
nodul prim
• Nodul nou inserat devine
prim
•
•
•
•
•
•
•
•
•
•
•
void inserare()
{
nod *p, *nou;
int y;
cout<<“y=“; cin>>y;
if (prim->info==x)
{nou=new nod;
nou->info=y;
nou->urm=prim;
prim=nou;}
}
Inserarea inaintea nodului cu valoare x
• Pasii:
• Se aloca memorie nodului
• Completam informatia in
nod
• Noul nod se leaga de nodul p
• Succesorul lui p devine noul
nod
•
•
•
•
•
•
•
•
•
•
void inserare()
{nod *p, *nou;
int y; cin>>y;
p=prim;
while (p->urm->info!=x)
p=p->urm;
nou=new nod;
nou->info=y;
p->urm=nou->urm;
p->urm=nou;}
Inserarea dupa nodul cu valoare x
•
•
•
•
Pasii:
Se aloca memorie nodului
Se scrie informatia in nod
Nodul nou se leaga de succesorul
nodului q
• Nodul q se leaga de nodul nou
• Daca nodul p a fost ultimul nod
al listei atunci nou devine ultim
•
•
•
•
•
•
•
•
•
•
void inserare()
{nod *p, *nou;
int y; cout<<“y=“; cin>>y; q=prim;
while (q->info!=x && q) q=q->urm;
nou=new nod;
nou->info=y;
nou->urm=q->urm;
q->urm=nou;
if (q==ultim)
ultim=nou; }
Inserarea unui element pe pozitia K
•
•
•
•
•
Pasii:
Daca k=1, se aloca memorie nodului nou
Completam nodul cu informatie
Succesorul noului nod este primul nod
Noul nod devine primul nod al listei
•
Daca K este diferit de 1, parcurgem lista
cu ajutorul lui p
Alocam spatiu de memorie noului nod
Completam nodul cu informatie
Legam noul nod de succesorul lui p
Succesorul lui p va fi noul nod
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
void inserare (int k, int y)
{if (k==1)
{nou=new nod;
nou->info=y;
nou->urm=prim;
prim=nou;}
else
{p=prim;
for (int i=1; i<k-1; i++)
p=p->urm;
nou=new nod;
nou->info=y;
nou->urm=p->urm;
p->urm=nou;}}