// 2piza45.c #include #include struct lista

Anuncio
// 2piza45.c
#include<stdio.h>
#include<conio.h>
struct lista * inicializa(struct lista *cabeza);
struct lista * mete(struct lista *cabeza, struct cliente cliente);
struct lista * saca(struct lista *cabeza, int codigo);
void amosa (struct lista *cabeza);
struct cliente {
int codigo;
char nome[40];
char cidade[20];
};
struct lista {
struct cliente datos;
struct lista *seguinte;
};
/////////////////////////////////////////////////////////////////////
void main(void)
{
struct lista *cabeza;
struct cliente cliente;
int numero,codigo;
char dato[10];
clrscr();
cabeza=NULL;
do
{
printf ("\n M E N U");
printf ("\n =======");
printf ("\n 1.- INICIALIZA Lista de clientes ");
printf ("\n 2.- AMOSA Lista de cliente");
printf ("\n 3.- METE cliente en Lista");
printf ("\n 4.- SACA cliente de Lista (iterativamente)");
printf ("\n 5.- FINAL\n ");
gets(dato);
numero=atoi(dato);
switch(numero)
{
case 1:
cabeza=inicializa(cabeza);
printf ("\n Lista INICIALIZADA\n");
break;
case 2:
amosa(cabeza);
break;
case 3:
printf ("\nDame cliente (para METER): ");
printf ("\n Codigo: ");
gets(dato);
cliente.codigo=atoi(dato);
printf ("\n Nome: ");
gets(cliente.nome);
printf ("\n Cidade: ");
gets(cliente.cidade);
cabeza=mete(cabeza,cliente);
break;
case 4:
printf ("\nDame CODIGO de cliente (para SACAR): ");
gets(dato);
codigo=atoi(dato);
cabeza=saca(cabeza,codigo);
break;
case 5:
printf ("\nFINAL");
break;
default:
printf ("\n OPCION Erronea\n");
break;
}
}
while (numero!=5);
getchar();
}
/////////////////////////////////////////////////////////////////////
struct lista * inicializa(struct lista *cab) {
cab=NULL;
return (cab);
}
/////////////////////////////////////////////////////////////////////
struct lista * mete(struct lista *cab, struct cliente cliente) {
struct lista *p;
p=(struct lista *)malloc (sizeof (struct lista));
p->datos=cliente;
p->seguinte=cab;
return (p);
}
/////////////////////////////////////////////////////////////////////
void amosa(struct lista *cab) {
printf ("\n
Lista de clientes");
printf ("\n
=================");
printf ("\n
CODIGO
NOME
while (cab!=NULL)
{
printf ("\n%10d",cab->datos.codigo);
printf ("%15s",cab->datos.nome);
printf ("%15s",cab->datos.cidade);
cab=cab->seguinte;
}
printf("\n");
}
CIDADE");
/////////////////////////////////////////////////////////////////////
struct lista * saca(struct lista *cab, int codigo) {
// solucion iterativa
struct lista *p,*q;
int salir;
p=cab;
salir=0;
while (!salir)
{
if (p==NULL)
salir=1;
else
{
if (p->datos.codigo==codigo)
{
if (cab==p)
cab=p->seguinte;
else
q->seguinte=p->seguinte;
free((struct lista *)p);
salir=1;
}
else
{
q=p;
p=p->seguinte;
}
}
}
return (cab);
}
Descargar