viernes, 6 de enero de 2012

C++ Clase cola circular de enteros

//archivo ccolacircular.h
// Class automatically generated by Dev-C++ New Class wizard

#ifndef CCOLACIRCULAR_H
#define CCOLACIRCULAR_H



// No description
class ccolacircular
{
     
    struct nodo {
           int dato;
           nodo *sig;      
    };
   
    typedef nodo *Puntero; 
   
    Puntero ini,fin;
    int nelementos;
   
    public:
        // class constructor
        ccolacircular();
        // class destructor
        ~ccolacircular();
        bool ColaVacia(void);
        int PrimeroCola();
        int UltimoCola();
        void insertarComienzo(int n);
        void insertarFinal(int n);
        void eliminar(int pos);
        void imprimir();
};



#endif // CCOLACIRCULAR_H
//archivo ccolacircular.cpp
// Class automatically generated by Dev-C++ New Class wizard
#include <cstdlib>
#include <iostream>
#include "ccolacircular.h" // class's header file
using namespace std;
// class constructor
ccolacircular::ccolacircular()
{
    // insert your code here
    ini=NULL;
    fin=NULL;
    nelementos=0;
}

// class destructor
ccolacircular::~ccolacircular()
{
    // insert your code here
}

bool ccolacircular::ColaVacia(void) {
     return ini==NULL;
}
int ccolacircular::PrimeroCola(){
    return((*ini).dato);
}
int ccolacircular::UltimoCola(){
    return((*fin).dato);
}
void ccolacircular::insertarComienzo(int n){
     Puntero nodonuevo;
     nodonuevo=new nodo;
     cout << "Nelementos:" << nelementos << endl;
     if (nelementos==0) {
        (*nodonuevo).dato=n;
        (*nodonuevo).sig=nodonuevo;
        ini=nodonuevo;
        fin=nodonuevo;  
        //cout << (*ini).dato << endl;
        //cout << (*fin).dato << endl;
     } else {
        (*nodonuevo).dato=n;
        (*nodonuevo).sig=ini;
        (*fin).sig=nodonuevo;
         ini=nodonuevo;
     }
     nelementos=nelementos+1;
}
void ccolacircular::insertarFinal(int n){
      Puntero nodonuevo;
      nodonuevo=new nodo;
      if (nelementos==0) {
         (*nodonuevo).dato=n;
         (*nodonuevo).sig=nodonuevo;
         ini=nodonuevo;
         fin=nodonuevo;
      } else {
         (*nodonuevo).dato=n;
         (*nodonuevo).sig=ini;
         (*fin).sig=nodonuevo;
         fin=nodonuevo;
      }
      nelementos=nelementos+1;
}
void ccolacircular::eliminar(int pos){
     if ((ini==NULL)&&(fin==NULL)) {
        cout << "La lista está vacía" << endl;
     } else
     {
           int i=1;
           Puntero nodoactual;
           nodoactual=new nodo;
           nodoactual=ini;
           Puntero nodoanterior;
           nodoanterior=new nodo;
           nodoanterior=fin;
           cout << "Dato elemento inicial:" << (*nodoanterior).dato << endl;
           while(i<=pos-1) {
              nodoanterior=(*nodoanterior).sig;
              i=i+1;
           }
           nodoactual=(*nodoanterior).sig;
           (*nodoanterior).sig=(*nodoactual).sig;
           nodoactual=NULL;
           nelementos=nelementos-1;
           cout << "nelementos tras eliminar:" << nelementos << endl;
     }
}    
void ccolacircular::imprimir(){
     Puntero nn;
     nn=new nodo;
    
     nn=ini;
    
     for(int i=1;i<=nelementos;i++) {
             cout << (*nn).dato << "-";
             nn=(*nn).sig;
     }
     cout << "Fin de lista" << endl;
}
//archivo mainccolacircular.cpp
#include <cstdlib>
#include <iostream>
#include "ccolacircular.h"

using namespace std;

int main(int argc, char *argv[])
{
   
    ccolacircular cc;
   
    cc.insertarComienzo(1);
    cc.insertarComienzo(2);
    cc.insertarComienzo(3);
    cc.insertarComienzo(4);
    cc.eliminar(2);
    cc.imprimir();
    system("PAUSE");
    return EXIT_SUCCESS;
}

2 comentarios: