Liste

Embed Size (px)

DESCRIPTION

SDA

Citation preview

#include#include#includetypedef struct liste{ int val; struct liste *urm;}LIST;void test (LIST *p){ if(p==NULL) { printf("Alocarea nu a reusit"); exit(1); } return ;}void citire(LIST *cap , int n){ LIST *p , *q; int i;p=cap; for(i=2;ival); q->urm=NULL; p->urm=q; p=q; } return ;}void parcurge( LIST *cap){ LIST *p; int i; for(p=cap,i=1;p!=NULL;p=p->urm,i++) printf(" Elementul %d al listei este %d \n",i,p->val);return ;}void sterge( LIST *cap){ LIST *p,*q; for(p=cap;p!=NULL;p=q) { q=p->urm; free(p); } return ;}void insereaza(LIST *cap , int x){int i=1;LIST *q,*p;q=(LIST*)malloc(sizeof(LIST));test(q);p=cap;while((p!=NULL)&& (iurm; i++;}if(p->urm ==NULL) { p->urm=q; printf("Dati valoarea pe care doriti sa o inserati "); scanf("%d",&q->val); q->urm=NULL; }q->urm=p->urm;printf(" Dati valoarea pe care doriti sa o inserati ");scanf("%d",&q->val);p->urm=q;return ;}void sterge_val(LIST *cap,int x){ int i=1; LIST *p,*q,*t;p=cap;while( p){q=p;p=p->urm;if(p->val==x) break; }if(p->urm==NULL) {q->urm=NULL;free(p); }q->urm=t;q->urm=p->urm;free(t);}int main (){ LIST *p,*cap; int n,x,va;printf("Dati numarul de elemente ale listei ");scanf("%d",&n);cap=(LIST*)malloc(sizeof(LIST));test(cap); printf(" Dati elementul 1 al listei "); scanf("%d",&cap->val); cap->urm=NULL;citire(cap,n);printf("\n");parcurge(cap);printf(" \n Dati pozitia in care doriti sa inserati un nou element : ");scanf("%d",&x);insereaza(cap,x);parcurge(cap);printf(" \n Dati valoarea pe care doriti sa o stergeti : ");scanf("%d",&va);sterge_val(cap,va);parcurge(cap);sterge(cap);getch();return 0; }