martes, 27 de mayo de 2014

PILA DINAMICA

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();
}