#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <todas.h>
#define ASCENDENTE 1
#define DESCENDENTE 0
void datos (void)
{
system("color 6");
int a=15,b=8;
gotoxy (a,b);
printf ("Edith Juarez Juarez \n\n");
int c=20,d=5;
gotoxy (c,d);
printf ("Grupo 351\n\n");
for(int x=3;x<=40;x++){
gotoxy(x,3);
printf("*");
}
for(int x=3;x<=40;x++){
gotoxy(x,10);
printf("*");
}
getch();
}
typedef struct _Nodo{
int Valor;
char Letras[3];
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()
{
datos();
int op=0;
while(1)
{
system("CLS");
printf("1.- Agregar\n");
printf("2.- Ascendente\n");
printf("3.- Descendente\n");
printf("4.- Borrar \n");
printf("5.- Quitar 3 \n");
printf("6.- Salir\n");
printf("\nEliga la 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<2;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();
}

No hay comentarios:
Publicar un comentario