Ştergerea unui nod dintr-o listă liniară simplu înlănţuită

6
ŞTERGEREA UNUI NOD DINTR-O LISTĂ LINIARĂ SIMPLU ÎNLĂNŢUITĂ Hoduţ Riana Clasa a X-a B CNME

Upload: breck

Post on 22-Feb-2016

36 views

Category:

Documents


0 download

DESCRIPTION

Ştergerea unui nod dintr-o listă liniară simplu înlănţuită. Hoduţ Riana Clasa a X-a B CNME. Ştergerea unui nod. Ştergerea unui nod: cu o valoare dată x de pe poziţia K. Ştergerea unui nod cu o valoare dată x. #include struct nod{int info; nod * urm;}; nod *prim; - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Ştergerea unui nod dintr-o listă liniară simplu înlănţuită

ŞTERGEREA UNUI NOD DINTR-O LISTĂ LINIARĂ SIMPLU ÎNLĂNŢUITĂ

Hoduţ Riana Clasa a X-a B CNME

Page 2: Ştergerea unui nod dintr-o listă liniară simplu înlănţuită

Ştergerea unui nodŞtergerea unui nod:

cu o valoare dată x de pe poziţia K

Page 3: Ştergerea unui nod dintr-o listă liniară simplu înlănţuită

Ştergerea unui nod cu o valoare dată x

#include<iostream.h>struct nod{int info; nod * urm;};nod *prim;void creare(){int x; nod *nou; cin>>x;if(prim==NULL) {prim=new nod; prim->info=x; prim->urm=NULL;}else { nou=new nod; nou->info=x;nou->urm=prim;prim=nou;}}void stergere(int x){ nod *aux , *p; if(prim->info==x){ aux=prim;prim=prim->urm; delete aux;}else { p=prim; while((p->urm)->info!=x && p->urm) p=p->urm; aux=p->urm; p->urm=aux->urm; delete aux;}}void afisare(){ nod*p; p=prim; while(p!=NULL) { cout<<p->info<<" " ; p =p->urm;}}main(){ int n, x; cout<<“intai n apoi x”; cin>>n;cin>>x;prim=NULL;for(int i=0;i<n;i++) creare();afisare();for(int j=0;j<n;j++) {stergere(x); cout<<endl; afisare();}}

Page 4: Ştergerea unui nod dintr-o listă liniară simplu înlănţuită

Ştergerea unui nod cu o valoare dată x

NULL5 6 3 2 7 1prim

n=6 x=3

5 6 3 2 7 1 NULL

prim

p

5 6 3 2 7 1

prim

p p auxNULL

5 6 2 7 1 NULL

Page 5: Ştergerea unui nod dintr-o listă liniară simplu înlănţuită

Ştergerea unui nod de pe pozitia k#include<iostream.h>struct nod{int info; nod * urm;};nod *prim;void creare(){int x; nod *nou; cin>>x;if(prim==NULL) {prim=new nod; prim->info=x; prim->urm=NULL;}else { nou=new nod; nou->info=x;nou->urm=prim;prim=nou;}}void stergere(int k){ nod *aux , *p; if(k==1){ aux=prim;prim=prim->urm; delete aux;}else { p=prim; for(int i =1;i<k-1;i++) p=p->urm;aux=p->urm; p->urm=aux->urm; delete aux;}}void afisare(){ nod*p; p=prim; while(p!=NULL) { cout<<p->info<<" " ; p =p->urm;}}main(){ int n, k; cout<<"intai n apoi k"; cin>>n;cin>>k;prim=NULL; for(int i=0;i<n;i++) creare();afisare();stergere(k);cout<<endl; afisare();}

Page 6: Ştergerea unui nod dintr-o listă liniară simplu înlănţuită

Ştergerea unui nod de pe pozitia k

NULL5 6 3 2 7 1prim

n=6 k=4

5 6 3 2 7 1 NULL

prim

p

5 6 3 2 7 1

prim

p p aux

NULL

5 6 7 1 NULL

p

3

1 2 3 4 5 6

1 2 3 4 5 6

1 2 3 4 5 6

1 2 3 4 5