//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;
}
// 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;
}
muchas graxias :P
ResponderEliminargracias a ti :)
ResponderEliminarComo le agrego un limite a la cola circular
ResponderEliminar