mihaispr
Administrator
 Inregistrat: acum 17 ani
Postari: 2142
|
|
//Divizarea unei ldi in 2 ldi una a el.pare si alta a el.impare
#include<stdio.h> #include<conio.h> #include<process.h> #include<alloc.h>
struct nod { int x; struct nod* pred,* next; }*l,*l1,*l2;
int i,n,opt,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); } }
void divizare(struct nod* l) {struct nod* c,*aux;int i=1; l1=NULL; l2=NULL; for(c=l;c;c=c->next) {aux= (struct nod* )malloc(sizeof(struct nod)); aux->x=c->x; if((c->x%2==0)) {aux->next=l1; l1=aux; } else {aux->next=l2; l2=aux; } } }
void main(void) {
do { puts("" ); puts("1.Creare" ); puts("2.Afisare" ); puts("3.Divizare" ); puts("4.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("Lista nr.pare" );afisare(l1); printf("Lista nr.impare" );afisare(l2); divizare(l); } } } while(opt<=4);
getch(); }
|
|