martes, 15 de octubre de 2013

Plantilla generica para una cola

Cola.htm
/*
  
  
  Author:Carlos Martin ramirez Garcia
  Date: 15/10/13 12:11
  Description:Plantilla generica de una cola 
*/

#include"NodoE.h"
#include"ColaE.h"
#include"NodoE.cpp"
#include"ColaE.cpp"
#include<iostream>
using namespace std;

int main()
{
ColaE<int> cola; 
cola.agregar(10);
cola.agregar(11);
cola.agregar(12);
cola.agregar(13);
cola.agregar(14);
cola.agregar(15);
cola.imprimir();

system("pause");
return 0;
}


ColaEEeee.htm
#ifndef COLAE_H
#define COLAE_H
#include"NodoE.h"
template<class T>
class ColaE
{
 public:
 NodoE<T> *primero;
 NodoE<T> *ultimo;
 ColaE();
int estaVacia();
void agregar(T dato);
T extraer();
T primerElemento();
void limpiar();
void imprimir();
};
#endif


ColaEEee.htm
#include<iostream>
using namespace std;

#include"NodoE.h"
#include"ColaE.h"

template <typename T>
ColaE<T>::ColaE()
 {
  primero=NULL;
  ultimo=NULL;
}
template <typename T>
int ColaE<T>::estaVacia()
{
  return(primero==NULL);      
}
template <typename T>
void ColaE<T>::agregar(T dato)
{
  NodoE<T> *nodo=new NodoE<T>(dato);
  if(estaVacia())
  {
    primero=nodo;
    ultimo=nodo;
   }
   else
   {
     ultimo->sig=nodo;
     ultimo=nodo;
     }
     }
template <typename T>
T ColaE<T>::extraer()
{
  NodoE<T> *nodo;
  nodo=primero;
  if(estaVacia())
  {
    return ;
  }
  else
  {
    primero=nodo->sig;
      if(primero==NULL)
      {
        ultimo=NULL;
        return nodo->dato;
        }
        }
        }
template <typename T>
T ColaE<T>::primerElemento()
{
  if(estaVacia())
  return NULL;
  else
  {
     return primero->dato;
     }
     }
template <typename T>     
void ColaE<T>::limpiar()
{
   primero=NULL;
   ultimo=NULL;
}
template <typename T>     
void ColaE<T>::imprimir()
{
  NodoE<T> *nodo;
  nodo=primero;
  int i=1;
  if(estaVacia())
  {
    cout<<"no existen datos"<<endl;
  }
  else
  {
  while(nodo!=NULL)
  {
     cout<<"nodo "<<i<<":"<<nodo->dato<<endl;
     nodo=nodo->sig;
     i++;
     }
     }
     }
     
   

Col.htm
#ifndef NODOE_H
#define NODOE_H
template<class T>
class NodoE
{
public:
      T dato;
      NodoE *sig;
      NodoE(T);
      NodoE();
             };
             #endif


ColaEEe.htm
#include"NodoE.h"
#include<iostream>
using namespace std;
template <typename T>
NodoE<T>::NodoE(T dato)
{
   this->dato=dato;
   sig=NULL;
}
template<typename T>
NodoE<T>::NodoE()
{
   dato=NULL;
   sig=NULL;
}

   


1 comentario: