#include <stdio.h> //libreria sirve para printf y scanf
#include <stdlib.h> //librera obligatoria para malloc() y el free
#include <string.h> //cadenas
#include <conio.h> //hacer un pause para mostrar datos
struct agenda //se declara una estructura
{
/*miembros de la estructura*/
char nombre [50];
char telefono[25];
char email[50];
};
/* se delcara una estructura nodo*/
struct nodo{
struct agenda dato; //estructura agenda dato
struct nodo *proximo; //estructura nodo , defino un puntero
} ;
struct nodo *nuevonodo(void);
int colavacia(struct nodo *);
struct nodo *creacola (struct nodo *, struct agenda);
void mostrar (struct nodo *);// se declara la funcion mostrar con prototipo de 1estructura y 1puntero
void main() //funcion principal
{
struct nodo *pri=NULL, *ult=NULL;
struct agenda x;
while (strcmp(x.
nombre, "fin"))
{
printf ("ingrese telefono: "); ult=creacola(ult,x);
if (pri==NULL) pri=ult; //si es la 1 pasada pongo en pri el valor del primer nodo
}
if (colavacia(pri)==1)
{
}
else mostrar(pri);
}
struct nodo *nuevonodo()
{
struct nodo *p;
p
=(struct nodo
*)malloc(sizeof(struct nodo
)); if(p==NULL)
{
}
return p;
}
struct nodo *creacola(struct nodo *ult, struct agenda x)
{
struct nodo *p;
p=nuevonodo();
(*p).dato=x;
(*p).proximo=NULL;
if(ult!=NULL) (*ult).proximo=p; //si hay nodo anterior en prox pongo la direccion del nodo actual
return p;
}
int colavacia(struct nodo *pri) //funcion entera con parametros de estructura y puntero
{
if(pri==NULL) return 1; //si pri es nulo retorna 1
else //caso contrario
return 0; //retorna 0 y finaliza el programa
}
void mostrar (struct nodo *pri) //funcion declarada para mostrar datos
//tiene como parametros strcut nodo y un puntero a *pri
{
struct nodo *aux; //estructura dentro de una funcion nodo con un puntero a *aux
while(pri!=NULL) //mientras se niega pri! es igual a un valor nulo, no apunta a ningun lado
{
/* imprime en pantalla telefono, mail, y imprime , y accede a cada mienbro de la estructura
struct agenda dato; y las imprime*/
printf("Nombre: %s - telefono: %s - Mail: %s n", pri->dato.nombre,pri->dato.telefono,pri->dato.email);
aux=pri; //las dos variables son iguales
pri=(*pri).proximo; //pri se igual a su apuntador
}
}