Aquí os dejo los módulos necesarios para manejar una cola y una pila con listas. Tened en cuenta que estos módulos rara vez vais a tener que modificarlos, por lo que es aconsejable realizar la tarea principal del programa en un módulo aparte y enlazarlo desde donde creais oportuno.
COLAS
Show ▼
#include <iostream>
using namespace std;
// REGISTRO DE CONTENIDO
typedef struct
{
int n;
char nombre[10];
} TReg;
// ESTRUCTURA DE COLA
typedef struct TNodoCola
{
TReg registro;
struct TNodoCola *pSig;
} *pNodoCola;
// ESTRUCTURA DE TOPE Y FINAL DE COLA
typedef struct
{
pNodoCola tope;
pNodoCola ult;
} COLA;
// FUNCIÓN DE CREACIÓN DE COLA VACÍA
void CrearCola(COLA &c)
{
c.tope = c.ult = NULL;
}
// FUNCIÓN DE COMPROBACIÓN DE COLA VACÍA
bool ColaVacia(COLA c)
{
return(c.tope == NULL);
}
// FUNCIÓN DE CREACIÓN DE NODO DE COLA
pNodoCola CrearNodocola(TReg registro)
{
pNodoCola nuevo = new TNodoCola;
if(nuevo != NULL)
{
CopiarObjeto(nuevo,registro);
nuevo->pSig = NULL;
}
return nuevo;
}
// FUNCIÓN DE ENCOLADO DE NODOS
void Encolar(COLA &c, pNodoCola nuevo)
{
if(ColaVacia(c)) c.tope = c.ult = nuevo;
else
{
c.ult->pSig = nuevo;
c.ult = nuevo;
}
}
// FUNCIÓN DE DESENCOLADO DE NODOS
void Desencolar(COLA &c)
{
pNodoCola e = c.tope;
if(!ColaVacia(c))
{
c.tope = c.tope->pSig;
if(c.tope == NULL) c.ult = NULL;
delete(e);
}
}
PILAS
Show ▼
#include <iostream>
using namespace std;
// REGISTRO DE CONTENIDO
typedef struct
{
int n;
char nombre[10];
} TReg;
// ESTRUCTURA DE PILA
typedef struct TNodoPila
{
TReg registro;
struct TNodoPila *pSig;
} *pNodoPila, *PILA;
// FUNCIÓN DE CREACIÓN DE PILA VACÍA
void CrearPila(PILA &p)
{
p = NULL;
}
// FUNCIÓN DE COMPROBACIÓN DE COLA VACÍA
bool PilaVacia(PILA p)
{
return(p == NULL);
}
// FUNCIÓN DE CREACIÓN DE NODO DE PILA
pNodoPila CrearNodoPila(TReg registro)
{
pNodoPila nuevo = new TNodoPila;
if(nuevo != NULL)
{
CopiarObjeto(nuevo,registro);
nuevo->pSig = NULL;
}
return nuevo;
}
// FUNCIÓN DE APILADO DE NODOS
void Apilar(COLA &c, pNodoPila nuevo)
{
nuevo->pSig = c;
c = nuevo;
}
// FUNCIÓN DE DESAPILADO DE NODOS
void Desapilar(PILA &p)
{
pNodoPila e = p;
if(!PilaVacia(p))
{
p = p->pSig;
delete(e);
}
}
Y ya está. A seguir estudiando!
0 Responses to “Colas y pilas usando estructuras dinámicas (C++)”
Leave a Reply