hola chicos,,
ojala me puedan asesorar..
es una lista enlazada y bueno al llenar los datos todo bien, al mandarlos a pantalla todo bien, pero cuando le doy la opcion que me los manda a pantalla recorriendo la lista hacia atras. ahi es el problema no me manda nada:(
#include <stdio.h>
#include<stdlib.h>
#include<conio.h>
#include <alloc.h>
typedef struct persona
{
int numc; /* Numero de control*/
char nom[30]; /* Nombre del paciente */
int num; /* Numero de afiliacion */
int edad; /* Edad del paciente */
char enfe[30]; /* Enfermedad */
struct persona *sig;
struct persona *ant;
}nodo;
/* declaracion de apuntadores a NODO*/
nodo *cola;
nodo *cabeza;
nodo *nuevo;
/*FUNCIONES A UTILIZAR O HACER LLAMAR*/
void iniciar(void);
void altas();
void recibe (nodo* paciente);
void mostrar();
void mostrar1();
/* FUNCIONA PRINCIPAL */
void main ()
{
char opc;
do /* MENU DE OPCION A REALIZAR*/
{
clrscr( );
gotoxy(20,6);
printf("******Bienvenido al registro de un nuevo paciente******");
//textcolor(BLUE);
gotoxy(10,8);
printf("**Presiona cualquier tecla para continuar y ver el menu**");
//textcolor(BLUE);
//textbackground(WHITE);
getch();
clrscr();
gotoxy(30,8);
printf("1.- Introduce datos del paciente");
gotoxy(30,10);
printf("2.- Visualizar los datos");
gotoxy(30,12);
printf("3.- Visualizar los datos hacia atras");
gotoxy(30,14);
printf("4.- Salir");
opc=getch( );
/*switch que ejecuta opcion a realizar */
switch(opc)
{
case '1':
altas( );
break;
case '2':
mostrar();
break;
case '3':
mostrar1();
break;
case '4':
printf("\n\nBye.!HASTA PRONTO!. \npresiona cualquier tecla");
getch();
}
}while (opc!='4');
}
flushall(); /*LIMPIA VARIABLES de posible basura*/
void altas ()
{ /* funcion de altas y una variable*/
nodo *tm; /* temporal*/
if (cabeza==NULL)
{
cabeza=(nodo*)malloc(sizeof(nodo));
recibe (cabeza);
printf ("!!!Dato Recibido!!");
cabeza->sig=NULL;
cola=cabeza;
cabeza->sig =nuevo;
}
else
{
tm=(nodo*)malloc(sizeof(nodo));
recibe ;
printf ("!!!Dato Recibido!!");
tm->sig=cabeza->sig;
cabeza->sig=nuevo;
}
}
/* funcion que muesrta los datos capturados */
void mostrar1()
{
nodo * tm;
clrscr();
tm=cabeza;
while
{
printf("Nombre del paciente:%s\n",tm->nom);
printf("Numero de control de expediente:%d\n",tm->numc);
printf("Numero de afiliacion:%d\n",tm->num);
printf("%Enfermedad que padece es:\n",tm->enfe);
printf("Edad del paciente:%d\n",tm->edad);
tm=tm->sig;
}
printf("\n\n\t");
getch();
}
void mostrar()
{
nodo * tm;
clrscr();
tm=cabeza;
while
{
printf("Nombre del paciente:%s\n",tm->nom);
printf("Numero de control de expediente:%d\n",tm->numc);
printf("Numero de afiliacion:%d\n",tm->num);
printf("%Enfermedad que padece es:\n",tm->enfe);
printf("Edad del paciente:%d\n",tm->edad);
tm=tm->sig;
}
printf("\n\n\t");
getch();
}
void recibe (nodo* paciente)
{
printf ("\nNumero de expediente:\n ");
scanf("%d",&(paciente->numc));
printf ("Nombre del paciente: \n");
scanf("%s",&(paciente->nom));
printf ("\nNumero de afiliacion:\n");
scanf ("%d",&(paciente->num));
printf("\nEdad del paciente:\n");
scanf("%d",&(paciente->edad));
printf("\nPadecimiento o enfermedad del paciente:\n");
scanf("%s",&(paciente->enfe));
gotoxy(20,6);
printf("\n\n\n");
}
void iniciar (void)
{
cola=cabeza=nuevo=NULL;
}
presiento que voy a tener un gran ERROR verdad?
saludos chicos