mihaispr
Administrator
 Inregistrat: acum 17 ani
Postari: 2142
|
|
/*Creati o lista simplu inlantuita care permite stergerea a m inregistrari de dupa inregistrarea cu valoarea campului x=val(val citit de la tastatura)*/
#include<stdio.h> #include<conio.h> //directiva pt.clrscr() si getch() din prog.principal void main() #include<iostream.h> //directiva pt.afisarea nu cu printf ci cu cout<<"Mesaj:"<<variabila #include<alloc.h> //directiva ce foloseste functiile de alocare new si dealocare delete struct nod { int x; struct nod* next; }*l;
int n,i,q,t,p1,val,m;
struct nod* creare() { struct nod* aux; int v; l=NULL; for(i=n;i>=1;i--) { aux= (struct nod* )malloc(sizeof(struct nod)); printf("valoarea nodului %d=",i); scanf("%d",&v); aux->x=v; aux->next=l; l=aux; } return l; }
void afisare() { struct nod* c; printf("lista este" ); if (!l) printf("vida" ); else { c=l; while (c) { printf("%3d",c->x); c=c->next; } } }
void stergere() {struct nod* c; c=l; //se pozitioneaza pe inregistrarea cu valoarea campului x=val while((c) &&(c->x!=val)) //cat timp lista nu s-a terminat si c->x!=val c=c->next;//se trece la urmatoarea inregistrare if(!c) cout<<"nu exista inregistrarea cu numarul:"<<val;//daca lista s-a terminat afiseaza mesaj else for(i=1;i<=m;i++) {q=c->next//se pastreaza inregistrarea urmatoare c->next in variabila q c->next=c->next->next; delete q;//se distruge q }
void main(void) { clrscr(); printf ("nr de noduri este:" ); scanf("%d",&n); printf("valoarea este:" ); scanf("%d",&val); l=creare(); afisare(); stergere(); afisare(); getch(); }
|
|