Foros del Web » Programación para mayores de 30 ;) » C/C++ »

problema con mi programa pilas en c++

Estas en el tema de problema con mi programa pilas en c++ en el foro de C/C++ en Foros del Web. Hola. Que tal amigos apenas estoy viendo con pilas y colas en c++ pero desafortunadamente la maestra enseña pesimo Llevo dos dias intentandolo y nada. ...
  #1 (permalink)  
Antiguo 22/05/2012, 01:28
 
Fecha de Ingreso: septiembre-2011
Ubicación: Mexico D.F
Mensajes: 10
Antigüedad: 12 años, 7 meses
Puntos: 0
Exclamación problema con mi programa pilas en c++

Hola. Que tal amigos apenas estoy viendo con pilas y colas en c++ pero desafortunadamente la maestra enseña pesimo Llevo dos dias intentandolo y nada. Estoy desesperado. Este es mi codigo. Supongamos que el usuario desea introducir cuatro numeros: 15,14,13,12. En valor obtenido me debe aparecer 12 y en dato1, dato2, datos3 me deben aparecer 15,14 y 13

#include<iostream>

using namespace std;


struct Nodo
{
int campo;
struct Nodo *siguiente,*anterior;
};

class Pila
{
struct Nodo *inicio,*final;
int indicePila;
public:
Pila()
{
indicePila=-1;
inicio=NULL;
final=NULL;
}

void mostrarDatos();

int numeroDatos();

void ponerDato(int Dato);

int obtenerDato();
};



void Pila::mostrarDatos()
{
cout<<" "<<endl;
cout<<"Datos de la Pila"<<endl;
struct Nodo *aux=final;
int i=1;
while(aux!=NULL)
{
cout<<"Dato"<<i++<<":"<<aux->campo<<endl;
aux=aux->siguiente;
}
}

int Pila::numeroDatos()
{
return indicePila+1;
}

void Pila::ponerDato(int Dato)
{
struct Nodo *nuevo=new(struct Nodo);

nuevo->campo=Dato;
nuevo->anterior=NULL;
nuevo->siguiente=NULL;

if(final!=NULL)
{
final->siguiente=nuevo;
nuevo->anterior=final;

}
else
{
inicio=nuevo;
final=nuevo;
indicePila++;
}
}

int Pila::obtenerDato()
{
struct Nodo *aux=final;

int valor;

if(aux!=NULL)
{
valor=aux->campo;
final=aux->siguiente;
indicePila--;

}
return valor;

}

int main()
{
int metere;
int c=0;
Pila EjemploPila;
cout<<"Inicia Cola"<<endl;

cout<<"Cuantos elementos vas a meter: "<<endl;
cin>>metere;
while(c<metere)
{
int n;
cout<<"Valor a meter: ";
cin>>n;
EjemploPila.ponerDato(n);
c++;
}
cout<<" "<<endl;
cout<<"Valor obtenido:"<<EjemploPila.obtenerDato()<<endl;

EjemploPila.mostrarDatos();

cout<<" "<<endl;

system("Pause");

return 0;
}
  #2 (permalink)  
Antiguo 22/05/2012, 05:27
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: problema con mi programa pilas en c++

Tu poner dato no funciona correctamente, ademas de que para ser una pila estas usando demasiados enlaces (punteros.)

Tu pila solo deberia tener un puntero al siguiente elemento...

Código C:
Ver original
  1. void Pila::ponerDato(int Dato)
  2. {
  3.      struct Nodo *nuevo=new(struct Nodo)
  4.      nuevo->campo=Dato;
  5.      nuevo->siguiente=inicio;
  6.      inicio = nuevo;
  7.       indicePila++;
  8. }

Código C:
Ver original
  1. int Pila::obtenerDato()
  2. {
  3.     int valor = -1;
  4.     struct Nodo * aux;
  5.     if(inicio != NULL)
  6.     {
  7.         valor=inicio->campo;
  8.         aux = inicio;
  9.         inicio = inicio->siguiente;
  10.         delete aux;
  11.         indicePila--;
  12.      }
  13.       return valor;
  14. }

Etiquetas: c++, colas, nodo, pilas, struct
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:50.