#include void menu(); void addelem(int x); void delelem(int x); void seelist(int x,int y); void savelefile(); void getlefile(); void text(char txt[100]); //mensajes interactivos internos void final(); struct snum { int num; struct snum *next; struct snum *back; }*nue,*act,*ini,*fin; FILE *l2efile; main () { nue=act=ini=fin=NULL; menu(); final(); } void menu() { char opc; int num; do { system("CLS"); _setcursortype(1); //cambiando el tipo de cursor textcolor(1); //cambiando color en letra textbackground(7); //cambiando color de fondo letra gotoxy(0,10); //posicionando cursor cprintf("ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ");printf("\n"); cprintf("ÛÛÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ0ÍXÍ»ÛÛÛÛÛÛÛÛ");printf("\n"); cprintf("ÛÛº --> Listas DOBLEMENTE enlazadas ºÛÛÛÛÛÛÛÛ");printf("\n"); cprintf("ÛÛº ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍ»ÛÛ");printf("\n"); cprintf("ÛÛº [1] º > Introducir un elemento º | ºÛÛ");printf("\n"); cprintf("ÛÛº [2] º > Eliminar un elemento º | ºÛÛ");printf("\n"); cprintf("ÛÛº [3] º > Mostrar lista enlazada º | ºÛÛ");printf("\n"); cprintf("ÛÛº [4] º > Buscar un elemento º | ºÛÛ");printf("\n"); cprintf("ÛÛº [5] º > Almacenar lista en file º | ºÛÛ");printf("\n"); cprintf("ÛÛº [6] º > Recuperar lista del file º | ºÛÛ");printf("\n"); cprintf("ÛÛº º º ºÛÛ");printf("\n"); cprintf("ÛÛº [*] º >> Salir del programa º | ºÛÛ");printf("\n"); cprintf("ÛÛÈÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍ͹ÛÛ");printf("\n"); cprintf("ÛÛÛÛÛÛÛÛº Introduce una opci¢n...[ ] ºÛÛ");printf("\n"); cprintf("ÛÛÛÛÛÛÛÛÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼÛÛ");printf("\n"); cprintf("ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ");printf("\n"); gotoxy(45,22); opc=getch(); //tratamiento de opciones posibles switch (opc) { case '1':{system("CLS");printf("\nNumero a introducir: ");scanf("%d",&num);addelem(num);break;} case '2':{system("CLS");printf("\nNumero a eliminar: ");scanf("%d",&num);delelem(num);break;} case '3':{system("CLS");printf("\nNumero a buscar: ");scanf("%d",&num);seelist(1,num);break;} case '4':{system("CLS");seelist(0,0);break;} case '5':{system("CLS");savelefile();break;} case '6':{system("CLS");getlefile();break;} case '*':{break;} default:{system("CLS");printf("\nIntroduce una opci¢n valida");getch();} } }while(opc!='*'); } void addelem(int x){ nue=(struct snum*)malloc(sizeof(struct snum)); nue->num=x; nue->next=NULL; nue->back=NULL; if (act==NULL) {act=nue;} else { if(nue->numnum){nue->next=act;act=nue;act->back=NULL;} else{ ini=fin=act; while(nue->num>fin->num&&fin!=NULL){ if(fin==act){fin=fin->next;} else{ini=ini->next;fin=fin->next;} } ini->next=nue;nue->back=ini; nue->next=fin;fin->back=nue; } } text("Elemento a¤adido..."); } void delelem(int x) { if(act==NULL){text("La lista se encuentra vacia");return;} if(act->num==x){ ini=act; act=act->next;act->back=NULL; free(ini); } else { ini=fin=act; while(fin->num!=x&&fin!=NULL){ if(fin==act){fin=fin->next;} else{ini=ini->next;fin=fin->next;} } if(fin==NULL){text("No se ha encontrado el elemento");return;} ini->next=fin->next; free(fin); } text("Elemento eliminado"); } void seelist(int x,int y){ //funcion que lista o busca en funcion de argumento int result=0; nue=act; while (nue!=NULL){ //recorriendo le if(x==0){printf("\nNumero:[%d]",nue->num);result=1;} //listando elementos if(x==1&&nue->num==y){printf("Numero encontrado: [%d]",nue->num);result=1;break;} nue=nue->next; } if(result==0){text("Numero no encontrado");} text("Fin del listado"); } void savelefile(){ nue=act; l2efile=fopen("l2e-file.txt","w"); while(nue!=NULL){ printf("\nGrabando[%d]...",nue->num); fprintf(l2efile,"\n%d",nue->num); sleep(1); nue=nue->next; } text("Grabaci¢n en fichero finalizada"); fclose(l2efile); } void getlefile() { int var; nue=act=ini=fin=NULL; printf("\nObteniendo datos del fichero...\n"); l2efile=fopen("l2e-file.txt","r"); while(feof(l2efile)==0){ fscanf(l2efile,"%d",&var); addelem(var); printf("\n>>>Numero: %d",var); } fclose(l2efile); text("Fin de lectura del fichero"); } void text(char txt[100]){ //funcion para mensajes automatizados _setcursortype(0); textbackground(1);textcolor(14);printf("\n"); cprintf(" MSG: >>> %50s ",txt);getch(); _setcursortype(2); } void final() { //funcion credit, about... system("CLS"); _setcursortype(0); textbackground(0); textcolor(11); printf("\n\n\n\n\n\n\n\n"); cprintf(" ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ "); printf("\n"); cprintf(" ÉÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͻÿ "); printf("\n"); cprintf(" º ²²²±±±°°° Listas enlazadas °°°±±±²²² º³³ "); printf("\n"); cprintf(" ÌÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĹ³³ "); printf("\n"); cprintf(" º ¸2001 by Quasi ³ quasi@wanadoo.es º³³ "); printf("\n"); cprintf(" º www.ircorion.cjb.net ³ inet@wanadoo.es º³³ "); printf("\n"); cprintf(" ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÁÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÁÙ "); printf("\n\n\n\n\n\n"); _setcursortype(0); sleep(2); system("CLS"); _setcursortype(2); exit(0); }