C:\Users\sku-59183\Desktop\repasodepilas\Nodo.h
#ifndef NODO_H
#define NODO_H
class Nodo
{
public:
Nodo(int, Nodo *);
int getValor() const;
Nodo *getSiguiente() const;
private:
int valor;
Nodo *siguiente;
};
#endif
C:\Users\sku-59183\Desktop\repasodepilas\Nodo.cpp
#include<iostream>
#include"Nodo.h"
Nodo::Nodo(int dato, Nodo *nuevo)
{
valor = dato;
siguiente = nuevo;
}
int Nodo::getValor() const
{
return valor;
}
Nodo *Nodo::getSiguiente() const
{
return siguiente;
}
C:\Users\sku-59183\Desktop\repasodepilas\Pila.h
#ifndef PILA_H
#define PILA_H
#include"Nodo.h"
class Pila
{
public:
Pila();
~Pila();
bool estaVacia() const;
int pop();
void push(int);
void imprimir() const;
private:
Nodo *tope;
};
#endif
C:\Users\sku-59183\Desktop\repasodepilas\Pila.cpp
#include<iostream>
using std::cout;
#include"Pila.h"
Pila::Pila()
{
tope = NULL;
}
Pila::~Pila()
{
Nodo *aux;
while(tope != NULL)
{
aux = tope;
tope =(*tope).getSiguiente();
delete aux;
}
}
void Pila::push(int dato)
{
Nodo *nuevo = new Nodo(dato,tope);
tope = nuevo;
}
int Pila::pop()
{
int r;
if(tope == NULL)
return 0;
else
{
Nodo *nuevo = tope;
tope = nuevo->getSiguiente();
r = nuevo->getValor();
delete nuevo;
return r;
}
}
void Pila::imprimir() const
{
Nodo *n;
n = tope;
while(n != NULL)
{
cout << n->getValor()<<"\n";
n=n->getSiguiente();
}
}
C:\Users\sku-59183\Desktop\repasodepilas\AppPilaDinamica.cpp
#include "Pila.h"
int main()
{
Pila p;
p.push(10);
p.push(50);
p.push(45);
p.push(345);
p.imprimir();
p.pop();
p.imprimir();
}