You are on page 1of 5

Ejemplos de C - Listas, pilas y colas II 1.- Programa que mete nmeros en una pila y los visualiza: #include<stdio.h> #include<stdlib.

h> struct nodo { int nro; struct nodo *p_anterior_nodo; struct nodo *p_siguiente_nodo; }; int fmenu(); struct nodo *fponer(struct nodo *p_cima_pila); void fvisualizar(struct nodo *p_cima_pila); void fliberar(struct nodo *p_cima_pila); void main() { int opcion; struct nodo *p_cima_pila=NULL; do { opcion=fmenu(); switch(opcion) { case 1: p_cima_pila=fponer(p_cima_pila); break; case 2: fvisualizar(p_cima_pila); break; case 3: fliberar(p_cima_pila); puts("FINAL DEL PROCESO DE PILAS"); break; default: puts("OPCION ERRONEA"); } }while(opcion!=3); } int fmenu() { int opcion; puts("OPERACIONES CON NUMEROS"); puts("---------------------------------------------"); puts("1.- PEDIR NUMEROS"); puts("2.- VISUALIZAR NUMEROS"); puts("3.- FINALIZAR"); puts("TECLEE LA OPERACION QUE DESEE REALIZAR"); scanf("%d",&opcion); return(opcion); } struct nodo *fponer(struct nodo *p_cima_pila) { char res; int aux; struct nodo *p_nuevo_nodo; do

{ puts("Que numero quieres guardar?"); scanf("%d",&aux); p_nuevo_nodo=(struct nodo *)malloc(sizeof(struct nodo)); if (p_nuevo_nodo==NULL) { puts("NO HAY MEMORIA PARA MAS NUMEROS"); break; } p_nuevo_nodo->nro=aux; if (p_cima_pila==NULL) { p_cima_pila=p_nuevo_nodo; p_cima_pila->p_anterior_nodo=NULL; p_cima_pila->p_siguiente_nodo=NULL; } else { p_nuevo_nodo->p_anterior_nodo=p_cima_pila; p_nuevo_nodo->p_siguiente_nodo=NULL; p_cima_pila->p_siguiente_nodo=p_nuevo_nodo; p_cima_pila=p_nuevo_nodo; } fflush(stdin); puts("Quieres guardar otro numero?"); res=getchar(); }while(res=='s' || res=='S'); return(p_cima_pila); puts("FINAL DEL PROCESO DE INSERTAR NODOS"); } void fvisualizar(struct nodo *p_cima_pila) { puts("LOS NUMEROS QUE QUEDAN SON:"); while (p_cima_pila!=NULL) { printf("%d\n",p_cima_pila->nro); p_cima_pila=p_cima_pila->p_anterior_nodo; } puts("FINAL DEL PROCESO DE VISUALIZAR"); } void fliberar(struct nodo *p_cima_pila) { struct nodo *p_aux; while(p_cima_pila!=NULL) { p_aux=p_cima_pila->p_anterior_nodo; free(p_cima_pila); p_cima_pila=p_aux; } puts("YA SE HA LIBERADO LA MEMORIA"); } 2.- Programa de gestin de los pacientes de una consulta mdica: #include<stdio.h> #include<string.h> #include<stdlib.h>

struct nodo { char nom[15]; char ape[15]; char dir[30]; char diag[50]; char trata[25]; int num; struct nodo *sgte; struct nodo *anterior; }; int fmenu(); void registrar(struct nodo **primero,struct nodo **ultimo,int *aux); void atender(struct nodo **primero); void liberar(struct nodo *primero); void main() { struct nodo *primero,*ultimo; int aux; int res; aux=1; primero=NULL; ultimo=NULL; do { res=fmenu(); switch(res) { case 1: registrar(&primero,&ultimo,&aux); break; case 2: atender(&primero); break; case 3: puts("\n fin del programa"); break; default: puts("\n opcion erronea"); } }while(res!=3); } int fmenu() { int opcion; printf("\n GESTION DECONSULTA MEDICA"); printf("\n ---------------------------"); printf("\n 1.- REGISTRAR LLEGADA DE UN PACIENTE"); printf("\n 2.- REGISTRAR ATENCION DE UN PACIENTE"); printf("\n 3.- FINALIZAR"); printf("\n teclee la opcion deseada: "); scanf("%d", &opcion); return(opcion); } void registrar(struct nodo **primero,struct nodo **ultimo,int *aux) {

struct nodo *nuevo; char nombre[15]; char apel[15]; char dire[30]; printf("\n nombre: "); fflush(stdin); gets(nombre); printf("\n apellido: "); fflush(stdin); gets(apel); printf("\n direccion: "); fflush(stdin); gets(dire); nuevo=(struct nodo *)malloc(sizeof(struct nodo)); if(nuevo==NULL) { puts("\n no hay memoria"); goto fin; } strcpy(nuevo->nom,nombre); strcpy(nuevo->ape,apel); strcpy(nuevo->dir,dire); nuevo->num=aux; if(*primero==NULL) { (*primero)=nuevo; nuevo->anterior=NULL; nuevo->sgte=NULL; *ultimo=nuevo; } else { nuevo->anterior=*ultimo; nuevo->sgte=NULL; (*ultimo)->sgte=nuevo; *ultimo=nuevo; } aux++; fin:puts("\n fin"); } void atender(struct nodo **primero) { char diagn[50]; char trat[25]; puts("\n diagnostico: "); fflush(stdin); gets(diagn); puts("\n tratamiento: "); fflush(stdin); gets(trat); strcpy((*primero)->diag, diagn); strcpy((*primero)->trata,trat);

printf("\n printf("\n printf("\n printf("\n printf("\n printf("\n printf("\n printf("\n printf("\n printf("\n printf("\n

INFORME MEDICO"); -----------------"); 1.- DATOS PERSONALES"); ----------------------"); NOMBRE: %s",(*primero)->nom ); APELLIDOS: %s",(*primero)->ape); DIRECCION: %s",(*primero)->dir); 2.- DIAGNOSTICO: %s",(*primero)->diag); -----------------"); 3.- TRATAMIENTO: %s",(*primero)->trata); ------------------");

*primero=(*primero)->sgte; (*primero)->anterior=NULL; }

VOLVER A PROGRAMAR 2002. All Rights Reserved.

You might also like