listas enlazadas

eimisofia
16 de Octubre del 2009
hola necesito q me ayuden con el siguiente programa: en una lista con doble enlce tengo que almacenar la informacion de unas encuestas el problema es que despues de q las digito por teclado y luego me voy a visualizar lo único que me sale es "lista vacia", osea lo que digito no me lo esta guardando.. ayuda.. el codigo es el siguiente:

#include<conio.h>
#include<stdio.h>
#include<iostream.h>
#include<alloc.h>
#include<string.h>
#include<stdlib.h>
void incluir_primero();
void visualizar();
//void modificar_encuesta();
void eliminar_encuesta();
//void cantidad_mujeres();

struct nodo
{
char nombre[30];
long cc;
int estrato;
char genero;

int edad;
struct nodo *ant;
struct nodo *sgte;
}
*inicial=NULL;

void main()
{
int opc;
do{
clrscr();
cout<<"n ENCUESTA ";
cout<<"n 1. incluir encuestado";
cout<<"n 2. visualizar encuesta";
cout<<"n 3. cantidad de mujeres";
cout<<"n 4. eliminar_encuesta";
cout<<"n 5. modificar_encuesta";
cout<<"n 7. salir";
cout<<"n opcion";
cin>>opc;
switch(opc)
{
case 1: incluir_primero();break;
case 2: visualizar();break;
// case 3: cantidad_mujeres();break;
case 4: eliminar_encuesta();break;
// case 5: modificar_encuesta();break;

}


} while (opc!=6);

}
void incluir_primero()
{
struct nodo *q;
q=new nodo;
clrscr;
cout<<"digite el nombre";
gets(q->nombre);
cout<<"digite la cc";
cin>>q->cc;
cout<<"digite el estrato";
cin>>q->estrato;
cout<<"digite el genero";
cin>>q->genero;
cout<<"digite la edad";
cin>>q->edad;

//incluir
q->ant=NULL;
q->sgte=inicial;
if(inicial!=NULL)
inicial->ant=q;
}

void visualizar()
{
struct nodo *x;
clrscr();
if(inicial==NULL)
{
cout<<"lista vacia";
getch();
}
else
{
x=inicial;
cout<<" nombre Cedula Estrato Genero edad";

while(x!=NULL)
{
cout<<"n"<<x->nombre<<" "<<x->cc<<" "<<x->estrato<<" "<<x->genero<<" "<<x->edad;
x=x->sgte;
}
getch();
}
}

void eliminar_encuesta()
{
struct nodo *x, *y;
long cc_eliminar;
clrscr();
if (inicial==NULL)
{
cout<<"n LISTA VACIA";
getch();
}
else
{
cout<<"n INFORMACION A ELIMINAR: ";
cin>> cc_eliminar;
if (inicial->cc==cc_eliminar)
{
x=inicial;
inicial=inicial->sgte;
free (x);
x=inicial;
}
else {
x=inicial->sgte;
y=inicial;
}
while (x!=NULL)
{
if (x->cc==cc_eliminar)
{
y->sgte=x->sgte;
free(x);
x=y->sgte;
}
else
{
y=x;
x=x->sgte;
}
}
}
}