mihaispr
Administrator
 Inregistrat: acum 17 ani
Postari: 2142
|
|
//Fctiile de creare,afisare,inserare,stergere pt. o ldi
#include<stdio.h> #include<conio.h> #include<process.h> #include<alloc.h>
struct nod { int x; struct nod* pred,* next; }*l;
int i,n,opt,p,x;
struct nod* creare(struct nod* l) {struct nod *aux;int v; l=NULL; for(i=n;i>=1;i--) { printf("inform.nodului %d",i); scanf("%d",&v); aux= (struct nod* )malloc(sizeof(struct nod)); aux->x=v; aux->pred=NULL; aux->next=l; l->pred=aux; l=aux; } return l; }
void afisare_SD(struct nod *l) {struct nod *c; if (!l) printf("\n Lista este vida:" ); else {for(c=l;c;c=c->next) printf("%d",c->x); } }
struct nod* insert (int x,int p) {struct nod* aux,* c; aux= (struct nod*)malloc(sizeof(struct nod)); aux->x=x; if (p==1) {aux->next=l; aux->pred=NULL; l=aux;} else {for(c=l,i=1;i<=p-2;i++) c=c->next; aux->next=c->next; if(c->next) c->next->pred=aux; c->next=aux; aux->pred=c; } return l; }
struct nod* stergere(int p) {struct nod* aux,* c; if(!l) printf("Lista vida:" ); else if(p==1) {aux=l; l->next->pred=NULL; l=l->next; } else {for(c=l,i=1;i<=p-2;i++,c=c->next) aux=c->next; c->next=c->next->next; if(c->next) c->next->pred=c; } free(aux); return l; }
void main(void) {
do { puts("" ); puts("1.Creare" ); puts("2.Afisare" ); puts("3.Stergere" ); puts("4.Inserare" ); puts("5.Terminare" ); printf("Alegeti optiunea" ); scanf("%d",&opt); switch(opt) { case 1:{printf("nr de noduri este" );scanf("%d",&n);l=creare(l); break;} case 2:afisare_SD(l); break; case 3:{printf("pozitia stearsa" );scanf("%d",&p); l=stergere(p);afisare_SD(l);} break; case 4:{printf("se adauga x=" );scanf("%d",&x);printf("pozitia de inserare" );scanf("%d",&p); l=insert(x,p);afisare_SD(l);} } } while(opt<=4);
getch(); }
|
|