#include void menu(); void addelem(int nume); void delelem(); void savelefile(); void getlefile(); struct snum { int num; struct snum *back; }*nue,*act; FILE *pilasfile; main () { nue=act=NULL; menu(); system("CLS"); _setcursortype(1); } void menu() { char opc; int nume; 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("ÛÛº --> Pilas ºÛÛÛÛÛÛÛÛ");printf("\n"); cprintf("ÛÛº ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍ»ÛÛ");printf("\n"); cprintf("ÛÛº [1] º > Introducir un elemento º | ºÛÛ");printf("\n"); cprintf("ÛÛº [2] º > Eliminar un elemento º | ºÛÛ");printf("\n"); cprintf("ÛÛº [] º > Buscar un elemento º | ºÛÛ");printf("\n"); cprintf("ÛÛº [] º > Mostrar pila º | ºÛÛ");printf("\n"); cprintf("ÛÛº [5] º > Almacenar pila en file º | ºÛÛ");printf("\n"); cprintf("ÛÛº [6] º > Recuperar pila 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",&nume);addelem(nume);break;} case '2':{system("CLS");delelem();break;} case '3':{break;} case '4':{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 nume){ nue=(struct snum*)malloc(sizeof(struct snum)); nue->num=nume; if(act==NULL){nue->back=NULL;act=nue;} else { nue->back=act; act=nue; } } void delelem() { if(act==NULL){return;} nue=act; printf("\nEliminado elemento [%d]",nue->num); act=act->back; getch(); free(nue); } void savelefile(){ nue=act; pilasfile=fopen("pilas-file.txt","w"); while(nue!=NULL){ printf("\nGrabando[%d]...",nue->num); fprintf(pilasfile,"\n%d",nue->num); sleep(1); nue=nue->back; } printf("\nFin de grabado en fichero"); fclose(pilasfile); getch(); } void getlefile() { int numef=1,x=0,y=0,var,*listnum; nue=act=NULL; printf("\nObteniendo datos del fichero...\n"); pilasfile=fopen("pilas-file.txt","r"); while(feof(pilasfile)==0){fscanf(pilasfile,"%d",&var);numef++;} listnum=(int*)malloc(numef*sizeof(int)); rewind(pilasfile);x=numef; while(feof(pilasfile)==0){ x--; fscanf(pilasfile,"%d",(listnum+x)); printf("\n>>%d",*(listnum+x)); } for(y=1;y