Ayuda con programa de listas en C++
Publicado por Nubia (1 intervención) el 23/11/2012 03:22:58
Buenas Noches,,
Estoy haciendo un programa de listas enlazadas que guarda nombres de empresas, pero el problema que me presenta es que en la salida no me muestra los nombres que ingreso sino un caracter extraño... y no entiendo por qué sucede esto...
El código que estoy haciendo es:
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
using namespace std;
struct nodo
{
char info;
struct nodo *sig;
struct nodo *ant;
} *cab=NULL, *fin=NULL, *nuevo;
char vacia(void){
if(cab==NULL)
return 1;
else
return 0;
}
void generar_nodo(char dato)
{
nuevo=new nodo;
nuevo->info=dato;
nuevo->sig=NULL;
nuevo->ant=NULL;
fin=nuevo;
}
void mostrar()
{
struct nodo *p;
if(vacia()==1)
cout<<"Lista Vacia"<<endl;
else
{
p=cab;
while (p!=NULL)
{
cout<<p->info<<"\n";
p=p->sig;
}
cout<<endl;
}
}
void insertar_Cab(char dato)
{
struct nodo *p,*q;
generar_nodo(dato);
if(cab==NULL)
cab=nuevo;
else {
p=cab;
p->ant=nuevo;
nuevo->sig=p;
q=cab=nuevo;
while(p->sig!=NULL)
p=p->sig;
if(p->sig==NULL)
fin=p;
}
}
void extraer_Cab(){
struct nodo *p;
if(cab==NULL)
cout<<"Lista Vacia"<<endl;
else{
p=cab;
if(p->sig!=NULL)
{
cab=cab->sig;
cab->ant=NULL;
delete (p);
}
else
{
cab=fin=NULL;
delete p;
}
}
}
void menu()
{
int opc=-1;
char emp[30];
while (opc!=0)
{
system ("cls");
cout<<"0. Salir "<<endl;
cout<<"1. Mostrar"<<endl;
cout<<"2. Insertar Inicio "<<endl;
cout<<"3. Extraer por el Inicio "<<endl;
cin>>opc;
switch(opc)
{
case 0:
system ("cls");
cout<<"el programa ha finalizado "<<endl;
getch();
break;
case 1:
system ("cls");
cout<<"la lista es:"<<endl;
mostrar();
getch();
break;
case 2:
system ("cls");
cout<<"ingrese una Empresa "<<endl;
cin>>emp;
insertar_Cab(emp[30]);
cout<<"\n DATO INSERTADO "<<endl;
getch();
break;
case 3:
system ("cls");
extraer_Cab();
cout<<"\n DATO ELIMINADO "<<endl;
getch();
break;
}
}
}
int main(){
menu();
getch();
return 0;
}
Gracias por su ayuda! :)
Estoy haciendo un programa de listas enlazadas que guarda nombres de empresas, pero el problema que me presenta es que en la salida no me muestra los nombres que ingreso sino un caracter extraño... y no entiendo por qué sucede esto...
El código que estoy haciendo es:
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
using namespace std;
struct nodo
{
char info;
struct nodo *sig;
struct nodo *ant;
} *cab=NULL, *fin=NULL, *nuevo;
char vacia(void){
if(cab==NULL)
return 1;
else
return 0;
}
void generar_nodo(char dato)
{
nuevo=new nodo;
nuevo->info=dato;
nuevo->sig=NULL;
nuevo->ant=NULL;
fin=nuevo;
}
void mostrar()
{
struct nodo *p;
if(vacia()==1)
cout<<"Lista Vacia"<<endl;
else
{
p=cab;
while (p!=NULL)
{
cout<<p->info<<"\n";
p=p->sig;
}
cout<<endl;
}
}
void insertar_Cab(char dato)
{
struct nodo *p,*q;
generar_nodo(dato);
if(cab==NULL)
cab=nuevo;
else {
p=cab;
p->ant=nuevo;
nuevo->sig=p;
q=cab=nuevo;
while(p->sig!=NULL)
p=p->sig;
if(p->sig==NULL)
fin=p;
}
}
void extraer_Cab(){
struct nodo *p;
if(cab==NULL)
cout<<"Lista Vacia"<<endl;
else{
p=cab;
if(p->sig!=NULL)
{
cab=cab->sig;
cab->ant=NULL;
delete (p);
}
else
{
cab=fin=NULL;
delete p;
}
}
}
void menu()
{
int opc=-1;
char emp[30];
while (opc!=0)
{
system ("cls");
cout<<"0. Salir "<<endl;
cout<<"1. Mostrar"<<endl;
cout<<"2. Insertar Inicio "<<endl;
cout<<"3. Extraer por el Inicio "<<endl;
cin>>opc;
switch(opc)
{
case 0:
system ("cls");
cout<<"el programa ha finalizado "<<endl;
getch();
break;
case 1:
system ("cls");
cout<<"la lista es:"<<endl;
mostrar();
getch();
break;
case 2:
system ("cls");
cout<<"ingrese una Empresa "<<endl;
cin>>emp;
insertar_Cab(emp[30]);
cout<<"\n DATO INSERTADO "<<endl;
getch();
break;
case 3:
system ("cls");
extraer_Cab();
cout<<"\n DATO ELIMINADO "<<endl;
getch();
break;
}
}
}
int main(){
menu();
getch();
return 0;
}
Gracias por su ayuda! :)
Valora esta pregunta


0