Me he declarado una clase
lifo.h
Código:
#include<iostream>
struct Tnodo
{
Tnodo *ant;
int datos;
};
typedef Tnodo *Tpila;
class lifo
{
private:
Tnodo *stack;
public:
//Constructores
lifo(void);
//Mira si la pila esta vacia
bool isEmpty(void);
//Mira el primer elemento de la pila sin quitarlo
int peek(void);
//Elimina el ultimo elemento
void pop(void);
//Inserta un nuevo elemento en la pila
void push(int new_element);
//Muestra por pantalla los elementos de nuestra pila
void print(void);
};
He hecho su implementacion, pero no me hace bien las cosas por tema de acceso a punteros.
lifo.cpp
Código:
#include"lifo.h"
//Constructor de la clase lifo
lifo::lifo(void)
{
stack->datos = 0;
stack->ant = NULL;
}
void lifo::push(int new_element)
{
Tnodo *nodo;
nodo->datos = new_element;
if(stack->ant == NULL)
{
nodo->ant = NULL;
}else
{
[s]nodo->ant = stack->ant;[/s]
}
stack->ant = &(*nodo);
}
void lifo::pop(void)
{
if(stack->ant == NULL)
{
std::cout<<"No hay elementos"<<std::endl;
}else
{
Tnodo * aux;
aux->ant = stack->ant;
delete(stack->ant);
stack->ant=aux->ant;
delete(aux);
}
}
int lifo::peek(void)
{
if (stack->ant != NULL)
{
return(stack->ant->datos);
}else
{
std::cout<<"No hay elementos"<<std::endl;
}
}
bool lifo::isEmpty(void)
{
if(stack->ant == NULL)
{
return(false);
}else
{
return(true);
}
}
void lifo::print(void){
Tnodo *aux;
aux->ant = stack->ant;
while(aux->ant != NULL)
{
std::cout<<"|"<<aux->ant->datos<<"|-->";
}
}
y aqui estaba comprobando que funcionase.
main.cpp
Código:
#include"lifo.h"
void main()
{
lifo pila;
pila.push(5);
pila.print();
}
He estado debugando y el problema son los punteros, pero al declarlos dentro de la clase no se como acceder a ellos bien bien o asignarles valores. Algunos puntos que veo criticos.
stack->ant = &(*nodo);
aux->ant->datos;
stack->datos = 0;
delete(stack->ant);
Gracias