C/Visual C - Listas dobles y simples

 
Vista:

Listas dobles y simples

Publicado por Victor (1 intervención) el 25/10/2008 23:13:19
Necesito ayuda con un programa que me reciba datos personales y luego los presente por pantalla tambien hay que realizar busquedas de los datos ingresados, aqui les pongo el programa para que alguien me de una ayudita. pr cierto me falta lo de la busqueda por que estoy perdido.

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

int main()
{ struct cliente {
char nombre [40];
char apellido1 [40];
char apellido2 [40];
char cedula [40];
char dirrecion [40];
char telefono [40];
char cliente [40];

struct cliente *siguiente;
};
struct cliente *primer, *ultimo, *actual;

//lista doble
struct cliented {
char nombred[40];
char apellido1d [40];
char apellido2d [40];
char cedulad [40];
char dirreciond [40];
char telefonod [40];
char cliented [40];

struct cliented *siguiented;
struct cliented *anteriord;
};
struct cliented *primerd, *ultimod, *actuald;

int opcion;
primer=NULL;
ultimo=NULL;
primerd=NULL;
ultimod=NULL;

do {

printf(" 1.-AGREGAR Datos del cliente(lista simple) ");
printf(" 2.-AGREGAR Datos del cliente(lista doble) ");
printf(" 3.-IMPRIMIR LA LISTA SIMPLE ");
printf(" 4.-IMPRIMIR LA LISTA DOBLE ");
printf(" 5.-BUSQUEDA DE CLIENTE(lista simple) ");
printf(" 6.-BUSQUEDA DE CLIENTE(lista doble) ");
printf(" 7.-fin ");
scanf ("%d" ,&opcion);
getchar();
switch (opcion){

case 1:
printf ("Datos Personales del Cliente (Lista Simple)"" ");
actual = (struct cliente *) malloc (sizeof(actual));
printf ("Digite el nombre: " );
fgets(actual->nombre,40,stdin);
if (primer==NULL)
primer=actual;
else {
ultimo->siguiente=actual;
}
actual->siguiente=NULL;
ultimo=actual;
printf (" ");

actual = (struct cliente *) malloc (sizeof(actual));
printf ("Digite el primer apellido: " );
fgets(actual->apellido1,40,stdin);
if (primer==NULL)
primer=actual;
else {
ultimo->siguiente=actual;
}
actual->siguiente=NULL;
ultimo=actual;
printf (" ");

actual = (struct cliente *) malloc (sizeof(actual));
printf ("Digite el segundo apellido: " );
fgets(actual->apellido2,40,stdin);
if (primer==NULL)
primer=actual;
else {
ultimo->siguiente=actual;
}
actual->siguiente=NULL;
ultimo=actual;
printf (" ");

actual = (struct cliente *) malloc (sizeof(actual));
printf ("Digite la cedula,de la forma 0 000 000: " );
fgets(actual->cedula,40,stdin);
if (primer==NULL)
primer=actual;
else {
ultimo->siguiente=actual;
}
actual->siguiente=NULL;
ultimo=actual;
printf (" ");

actual = (struct cliente *) malloc (sizeof(actual));
printf ("Indique la dirrecion: " );
fgets(actual->dirrecion,40,stdin);
if (primer==NULL)
primer=actual;
else {
ultimo->siguiente=actual;
}
actual->siguiente=NULL;
ultimo=actual;
printf (" ");

actual = (struct cliente *) malloc (sizeof(actual));
printf ("Digite el telefono,de la forma 0000-0000: " );
fgets(actual->telefono,40,stdin);
if (primer==NULL)
primer=actual;
else {
ultimo->siguiente=actual;
}
actual->siguiente=NULL;
ultimo=actual;
printf (" ");
break;

case 2:printf ("Datos Personales del Cliente (Lista Doble)"" ");
actuald = (struct cliented *) malloc (sizeof(actuald));
printf ("Nombre del Cliente: ");
fgets(actuald->nombred,40,stdin);
if (primerd==NULL)
{primerd=actuald;
actuald=primerd;}
else {
primerd->anteriord=actuald;
ultimod->siguiented=actuald;
}
primerd->anteriord=actuald;
actuald->siguiented=NULL;
ultimod=actuald;
printf (" ");

actuald = (struct cliented *) malloc (sizeof(actuald));
printf ("Primer apellido del Cliente: ");
fgets(actuald->apellido1d,40,stdin);
if (primerd==NULL)
{primerd=actuald;
actuald=primerd;}
else {
primerd->anteriord=actuald;
ultimod->siguiented=actuald;
}
primerd->anteriord=actuald;
actuald->siguiented=NULL;
ultimod=actuald;
printf (" ");

actuald = (struct cliented *) malloc (sizeof(actuald));
printf ("Segundo apellido del Cliente: ");
fgets(actuald->apellido2d,40,stdin);
if (primerd==NULL)
{primerd=actuald;
actuald=primerd;}
else {
primerd->anteriord=actuald;
ultimod->siguiented=actuald;
}
primerd->anteriord=actuald;
actuald->siguiented=NULL;
ultimod=actuald;
printf (" ");

actuald = (struct cliented *) malloc (sizeof(actuald));
printf ("Cedula del Cliente,de la forma 0 000 000: ");
fgets(actuald->cedulad,40,stdin);
if (primerd==NULL)
{primerd=actuald;
actuald=primerd;}
else {
primerd->anteriord=actuald;
ultimod->siguiented=actuald;
}
primerd->anteriord=actuald;
actuald->siguiented=NULL;
ultimod=actuald;
printf (" ");

actuald = (struct cliented *) malloc (sizeof(actuald));
printf ("Dirrecion del Cliente: ");
fgets(actuald->dirreciond,40,stdin);
if (primerd==NULL)
{primerd=actuald;
actuald=primerd;}
else {
primerd->anteriord=actuald;
ultimod->siguiented=actuald;
}
primerd->anteriord=actuald;
actuald->siguiented=NULL;
ultimod=actuald;
printf (" ");

actuald = (struct cliented *) malloc (sizeof(actuald));
printf ("Telefono del Cliente,de la forma 0000-0000: ");
fgets(actuald->telefonod,40,stdin);
if (primerd==NULL)
{primerd=actuald;
actuald=primerd;}
else {
primerd->anteriord=actuald;
ultimod->siguiented=actuald;
}
primerd->anteriord=actuald;
actuald->siguiented=NULL;
ultimod=actuald;
printf (" ");

break;

case 3:
printf ("Listado de nombre (Lista Simple)");
printf ("Listado de primer apellido (Lista Simple)");
printf ("Listado de segundo apellido (Lista Simple)");
printf ("Listado de numero de cedula (Lista Simple)");
printf ("Listado de dirrecion (Lista Simple)");
printf ("Listado de telefono (Lista Simple)");
printf (" ");
actual=primer;
while (actual!= NULL){
printf (" Nombre : %s ",actual->nombre);
printf (" Primer apellido : %s ",actual->apellido1);
printf (" Segundo apellido : %s ",actual->apellido2);
printf (" Numero de cedula : %s ",actual->cedula);
printf (" Dirrecion : %s ",actual->dirrecion);
printf (" Telefono : %s ",actual->telefono);
actual=actual->siguiente;}
printf (" ");

break;

case 4:
printf ("Listado de Nombre (Lista Doble)");
printf ("Listado de Primer Apellido (Lista Doble)");
printf ("Listado de Segundo apellido (Lista Doble)");
printf ("Listado de Cedula (Lista Doble)");
printf ("Listado de Dirrecion (Lista Doble)");
printf ("Listado de Telefono (Lista Doble)");
printf (" ");
actuald=primerd;
while (actuald!= NULL){
printf (" Nombre : %s ",actuald->nombred);
printf (" Primer Apellido : %s ",actuald->apellido1d);
printf (" Segundo Apellido : %s ",actuald->apellido2d);
printf (" Cedula : %s ",actuald->cedulad);
printf (" Dirrecion : %s ",actuald->dirreciond);
printf (" Telefono : %s ",actuald->telefonod);
actuald=actuald->siguiented;}
printf (" ");

break;


case 7:printf ("Fin del programa");
}
}while (opcion != 5);
printf ("Programa terminado ");
return (0);
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder