Inserarea unui element Î ntr -o list Ă

7
FOLOSIND ALOCAREA DINAMICĂ INSERAREA UNUI ELEMENT ÎNTR-O LISTĂ

description

Inserarea unui element Î ntr -o list Ă. Folosind alocarea dinamică. Clasificare. Într-o listă liniară simplu înlănţuită, se poate insera un element : Înaintea primului nod al listei După ultimul nod al listei Înaintea nodului cu valoare x După nodul cu valoarea x Pe poziţia k. - PowerPoint PPT Presentation

Transcript of Inserarea unui element Î ntr -o list Ă

Page 1: Inserarea unui  element  Î ntr -o list Ă

FOLOSIND ALOCAREA DINAMICĂ

INSERAREA UNUI ELEMENT ÎNTR-O LISTĂ

Page 2: Inserarea unui  element  Î ntr -o list Ă

CLASIFICARE

• Într-o listă liniară simplu înlănţuită, se poate insera un element :

• Înaintea primului nod al listei• După ultimul nod al listei• Înaintea nodului cu valoare x• După nodul cu valoarea x• Pe poziţia k

Page 3: Inserarea unui  element  Î ntr -o list Ă

INSERAREA UNUI ELEMENT ÎNAINTEA PRIMULUI NOD

void creare(int x){nod *nou;if(prim==NULL){

prim=new nod;prim->info=x;prim->urm=NULL;}

else {nou=new nod;nou->info=x;nou->urm=prim;prim=nou;

}}

Declaram o variabila de tip nodVerificam daca lista este vidaDaca da: alocam mem. primul nodCompletam campurile de infoSi facem legatura catre NULLDaca nu: alocam memorie noului nodCompletam campurile de infoFacem legatura cu primul nodNoul nod devine primul

Page 4: Inserarea unui  element  Î ntr -o list Ă

INSERAREA UNUI ELEMENT DUPĂ ULTIMUL NOD

void crearea2(){if(prim==NULL){

prim=new nod;prim->info=x;prim->urm=NULL;ultim=prim;

}else{

nou=new nod;nou->info=x;nou->urm=NULL;ultim->urm=nou;ultim=nou;

}}

Verificam daca lista este vidaDaca da: alocam mem. primul nodCompletam campurile de infoSi facem legatura catre NULLPrimul nod devine ultimulDaca nu: alocam memorie noului nodCompletam campurile de infoFacem legatura cu NULLFacem legatura dintre ultimul nod si noul nodNoul nod devine ultimul

Page 5: Inserarea unui  element  Î ntr -o list Ă

INSERAREA UNUI ELEMENT ÎNAINTEA NODULUI CU VALOARE X

int i; int inserare(int x,int y){

if(prim->info==x) {

nou=new nod;nou->info=y;nou->urm=prim;prim=nou;

} else {

nou=new nod;p=prim;while((p->urm)->info!=x && p->urm)p=p->urm;nou->info=y;nou->urm=p->urm;p->urm=nou; }

}

Page 6: Inserarea unui  element  Î ntr -o list Ă

INSERAREA UNUI ELEMENT DUPĂ NODUL CU VALOARE X

int i; int inserare(int x,int y){

if(ultim->info==x) {

nou=new nod;nou->info=y;nou->urm=NULL;ultim->urm=nou;ultim=nou;

} else {

nou=new nod;p=prim;while(p->info!=x && p->urm)p=p->urm;nou->info=y;nou->urm=(p->urm)->urm;p->urm=nou;}

}

Page 7: Inserarea unui  element  Î ntr -o list Ă

INSERAREA UNUI ELEMENT PE POZIŢIA K

int i; int inserare(int k, int y){

if(k==1) {

nou=new nod;nou->info=y;nou->urm=prim;prim=nou;

} else {

nou=new nod;p=prim;for(i=1;i<k-1;i++)p=p->urm;nou->info=y;nou->urm=p->urm;p->urm=nou;}

}

Secretul acestui algoritm esterefacerea legaturilor dintre noduri