mihaispr
Administrator
 Inregistrat: acum 17 ani
Postari: 2142
|
|
//Creati o lista simplu inlantuita care permite stergerea ultimelor m inregistrari
#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,*ultim;
int n,i,q,t,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 ultima inregistrare in t se pastreaza penultima inreg while(c!=ultim) { t=c; c=c->next; } for(i=1;i<=m;i++) q=c; //se pastreazxa ultima inregistrare intr-o variabila q t->next=0; //se stabilesc legaturile intre vecinii lui q,t si 0 de la stanga la dreapta ultim=t; delete q; //se distruge q }
void main(void) { clrscr(); printf ("nr de noduri este:" ); scanf("%d",&n); l=creare(); afisare(); stergere(); afisare(); getch(); }
|
|