ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Mi Mama Me Ama


Enviado por   •  26 de Diciembre de 2012  •  509 Palabras (3 Páginas)  •  522 Visitas

Página 1 de 3

#include <stdio.h>

#include <stdlib.h>

#define MAXCADENA 200

enum { Ver=1, Alta, Buscar, Salir };

struct Entrada {

char * nombre;

char * direccion;

char * telefono;

};

struct NodoAgenda {

struct Entrada datos;

struct NodoAgenda * sig;

};

typedef struct NodoAgenda * TipoAgenda;

void quita_fin_de_linea(char linea[])

{

int i;

for (i=0; linea[i] != ’\0’; i++)

if (linea[i] == ’\n’) {

linea[i] = ’\0’;

break;

}

}

void muestra_entrada(struct NodoAgenda * e)

// Podr´iamos haber pasado e por valor, pero resulta m´as eficiente (y no mucho m´as

// inc´omodo) hacerlo por referencia: pasamos as´i s´olo 4 bytes en lugar de 12.

{

printf ("Nombre : %s\n", e->datos.nombre);

printf ("Direcci´on: %s\n", e->datos.direccion);

printf ("Tel´efono : %s\n", e->datos.telefono);

}

void libera_entrada(struct NodoAgenda * e)

{

int i;

free(e->datos.nombre);

free(e->datos.direccion);

free(e->datos.telefono);

free(e);

}

TipoAgenda crea_agenda(void)

{

return NULL;

}

TipoAgenda anyadir_entrada(TipoAgenda agenda, char nombre[],

char direccion[], char telefono[])

{

struct NodoAgenda * aux, * e;

/* Averiguar si ya tenemos una persona con ese nombre */

if (buscar_entrada_por_nombre(agenda, nombre) != NULL)

return agenda;

/* Si llegamos aqu´i, es porque no ten´iamos registrada a esa persona. */

e = malloc(sizeof(struct NodoAgenda));

e->datos.nombre = malloc((strlen(nombre)+1)*sizeof(char));

strcpy(e->datos.nombre, nombre);

e->datos.direccion = malloc((strlen(direccion)+1)*sizeof(char));

strcpy(e->datos.direccion, direccion);

e->datos.telefono = malloc((strlen(telefono)+1)*sizeof(char));

strcpy(e->datos.telefono, telefono);

e->sig = agenda;

agenda = e;

return agenda;

}

void muestra_agenda(TipoAgenda agenda)

{

struct NodoAgenda * aux;

for (aux = agenda; aux != NULL; aux = aux->sig)

muestra_entrada(aux);

}

struct NodoAgenda * buscar_entrada_por_nombre(TipoAgenda agenda, char nombre[])

{

struct NodoAgenda * aux;

for (aux = agenda; aux != NULL; aux = aux->sig)

if (strcmp(aux->datos.nombre, nombre) == 0)

return aux;

return NULL;

}

void libera_agenda(TipoAgenda agenda)

{

struct NodoAgenda * aux, *siguiente;

aux = agenda;

while (aux != NULL) {

siguiente = aux->sig;

libera_entrada(aux);

...

Descargar como (para miembros actualizados) txt (5 Kb)
Leer 2 páginas más »
Disponible sólo en Clubensayos.com