Вы находитесь на странице: 1из 11

#include <stdio.h> #include <conio.h> #include <stdlib.

h>

typedef struct _Nodo{ int Valor; char letras[5]; struct _Nodo *Siguiente; struct _Nodo *Anterior; }Nodo;

int TotReg=0; Nodo *Lista = NULL;

int Inicio(void); void Agregar(void); void Listar(int); void Borrar(void); void Quitar(void);

main() { int op=0;

while(1) {

system("CLS"); printf("1.- Agregar Elementos\n"); printf("2.- Orden Ascendente\n"); printf("3.- Orden Descendente\n"); printf("4.- Borrar Datos\n"); printf("5.- Borrar las letras\n"); printf("6.- Salir\n"); printf("\nElige una opcion: "); fflush(stdin); scanf("%i",&op); switch(op) { case 1: free(Lista); if(Inicio() == 1) Agregar(); else { printf("\nNo se pudo reservar memoria\n"); getch(); } break; case 2: Listar(0); break; case 3:

Listar(1); break; case 4: Borrar(); break; case 5: Quitar(); break; case 6: free(Lista); exit(1); break; default: printf("\n<Opcion no valida>\n\n"); fflush(stdin); getch(); break; } } }

int Inicio(void) { Lista = (Nodo *)malloc(sizeof(Nodo)); if(Lista == NULL) return 0;

else { Lista -> Siguiente = NULL; Lista -> Anterior = NULL; return 1; } }

void Agregar(void) { int j,i,k,m; Nodo *New=NULL; Nodo *Tmp=Lista;

system("CLS"); if (Tmp!=NULL) { printf("Cuantos numeros deseas agregar: "); fflush(stdin); scanf("%d",&j); for(i=0;i<j;i++) { New = (Nodo *)malloc(sizeof(Nodo)); printf("\nNumero: "); fflush(stdin); scanf("%i",&New->Valor);

for(k=0;k<5;k++) { printf("Letra [%i]: ",k+1); fflush(stdin); scanf("%c",&New->letras[k]); } New->Siguiente=NULL; while(Tmp->Siguiente!=NULL) Tmp = Tmp->Siguiente; New->Anterior = Tmp; Tmp->Siguiente = New; TotReg++; } } else { printf("\nNo se pudo agregar elemento.\n"); fflush(stdin); getch(); } }

void Listar(int Orden) { int i=0,j=0; Nodo *Tmp=Lista;

system("CLS"); if(Tmp!=NULL) { if(TotReg > 0) { if(Orden==0) { while(Tmp->Siguiente != NULL) { Tmp=Tmp->Siguiente; printf("\n\nRegistro [%i]\n",j+1); printf("Numero: %i\n",Tmp->Valor); printf("Letras: "); for(i=0;i<5;i++) { printf(" %c",Tmp->letras[i]); } j++; } } else { while(Tmp->Siguiente!=NULL) Tmp=Tmp->Siguiente; do{ printf("\n\nRegistro [%i]\n",j+1); printf("Numero: %i\n",Tmp->Valor);

printf("Letras: "); for(i=0;i<5;i++) { printf(" %c",Tmp->letras[i]); } j++; Tmp = Tmp->Anterior; }while(Tmp->Anterior!=NULL); } } else { printf("\nLista Vacia."); } } else { printf("No se pudo Listar\n"); } fflush(stdin); getch(); }

void Borrar(void) { int Num=0,i=0;

Nodo *Tmp=Lista; system("CLS");

if(Tmp!=NULL) { printf("Establezca el numero de elementos a Eliminar: "); fflush(stdin); scanf("%i",&Num);

for(i=0;i<Num&&Tmp->Siguiente!=NULL;i++) { Tmp=Tmp->Siguiente; TotReg--; } Lista=Tmp; printf("\nDatos Eliminados."); } else printf("\nLista vacia.");

fflush(stdin); getch(); }

void Quitar(void) {

int i = 0; Nodo *Tmp = Lista;

system("CLS"); if(Tmp->Siguiente != NULL) { while(Tmp->Siguiente!=NULL) { Tmp=Tmp->Siguiente; for(i=0;i<5;i++) { if(i>1) Tmp->letras[i]=' '; } } printf("\nLetras quitadas."); } else { printf("\nLista vacia."); }

fflush(stdin); getch(); }

Вам также может понравиться