hola necesito que alguien me diga en donde estoy mal en este programa lo corre pero no em lee las cadenas de ante mano gracias =)
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include <string>
#include<conio.h>
#define n 20
using namespace std;
typedef struct nodo
{
string dat[n];
struct nodo *p;
}nod;
nod *tope=NULL;
void push(string ndat)
{
nod *nvo;
nvo=new nod;
nvo->dat[n]=ndat;
if(tope==NULL)
nvo->p=NULL;
else
{
nvo->p=tope;
}
tope=nvo;
}
void pop()
{
nod *aux=tope;
if(tope==NULL)
{
cout<<"\n La pila esta vacia\n";
system("pause");
return;
}
tope=aux->p;
cout<<"\n Sale: "<<aux->dat<<endl;
system("pause");
delete(aux);
}
void imprimepila()
{
nod *aux=tope;
if(tope==NULL)
{
cout<<"\n La pila esta vacia\n";
system("pause");
return;
}
while(aux!=NULL)
{
cout<<aux->dat<<endl;
aux=aux->p;
}
cout<<endl;
system("pause");
}
void busca(string bus)
{
nod *aux=tope;
int contador=0;
if(tope==NULL)
{
cout<<"\n La pila esta vacia\n";
system("pause");
return;
}
while(aux!= NULL)
{
if(aux->dat[n]==bus)
{
cout<<"\nDato encontrado en la posicion: "<<contador<<endl;
system("pause");
return;
}
aux=aux->p; contador++;
}
cout<<"\nEl "<<bus<<" no esta en la pila.\n";
}
void ultima()
{
nod *aux=tope;
if(tope==NULL)
{
cout<<"\n La pila esta vacia\n";
system("pause");
return;
}
while(aux->p!= NULL)
{
aux=aux->p;
}
cout<<"\nEl dato que esta en el fondo de la pila es: "<<aux->dat<<endl;;
system("pause");
}
void primero()
{
if(tope==NULL)
{
cout<<"\n La pila esta vacia\n";
system("pause");
return;
}
cout<<tope->dat<<endl;
}
void numelemento(string bus)
{
nod *aux=tope;
int contador=0;
if(tope==NULL)
{
cout<<"\n La pila esta vacia\n";
system("pause");
return;
}
while(aux!= NULL)
{
contador++;
aux=aux->p;
}
cout<<"\nLa pila tiene: "<<contador<<" elementos";
}
void elimina()
{
nod *aux=tope;
int contador=0;
if(tope==NULL)
{
cout<<"\n La pila esta vacia\n";
system("pause");
return;
}
while(aux!= NULL)
{
aux=aux->p;
pop();
}
cout<<"\n La pila esta vacia\n";
}
main()
{
int opc;
string dato[n], buscado[n];
string dat[n];
cout<<"\nEscoja una opcion: \n";
do{
cout<<"\n 1.Insertar en la pila";
cout<<"\n 2.Sacar de la pila";
cout<<"\n 3.Imprimir pila";
cout<<"\n 4.Buscar en la pila";
cout<<"\n 5.Elemento ubicado en el fondo de la pila";
cout<<"\n 6.Elemento ubicado al principio de la pila";
cout<<"\n 7.Numero del elemento en la pila";
cout<<"\n 8.Eliminar toda la pila";
cout<<"\n 9.salir\n\n";
cin>>opc;
switch(opc)
{
case 1:
cout<<"\nDato a insertar: ";
fflush(stdin);
getline(cin,dato[n]);
push(dato[n]);
system("pause");
break;
case 2:
pop();
break;
case 3:
imprimepila();
break;
case 4:
cout<<"\nDar dato a insertar: ";
fflush(stdin);
getline(cin,buscado[n]);
busca(buscado[n]);
break;
case 5:
ultima();
break;
case 6:
primero();
break;
case 7:
cout<<"\nQue elemento deseas buscar: ";
fflush(stdin);
getline(cin,dat[n]);
numelemento(dat[n]);
break;
case 8:
elimina();
break;
case 9:
cout<<"\nFin del programa. ";
system("pause");
break;
default:
cout<<"\nOpcion incorrecta vuelve a intentarlo ";
}
}while(opc!=9);
}