Colas Dobles - 6858
Colas Dobles - 6858
Colas Dobles - 6858
SEMESTRE 4 “2”
Informe No. 2
IDENTIFICACION
Facultad: Informática y Electrónica
Carrera: Software
Semestre: 4
Paralelo: 2
Fecha: 20 – 11 – 2022
Revisado
Calificación
TEMA: Colas Dobles
OBJETIVO GENERAL
• Conocer aspectos teóricos de las Colas Dobles para poderlos aplicar en
el desarrollo de algoritmos para la solución de problemas.
OBJETIVOS ESPECÍFICOS
● Conocimiento teórico y práctico
● Manejo e implementación de Colas Dobles
MARCO TEÓRICO
APLICACIÓN PRÁCTICA
El código está implementado con inserción y eliminación por ambos lados de la
cola.
/*
Colas Dobles
Inserta y elimina elementos por el frente y final de la cola.
Danilo Baquero - 6858
*/
#include <iostream>
#include <stdlib.h>
/* Estructura de la cola
----------------------------------------------------------------------*/
struct cola
{
nodo *frente;
nodo *final;
};
/* Crear Nodo
----------------------------------------------------------------------*/
struct nodo *crearNodo( char x)
{
struct nodo *nuevoNodo = new(struct nodo);
nuevoNodo->dato = x;
return nuevoNodo;
};
/* Encolar elemento
----------------------------------------------------------------------*/
void encolar( struct cola &q, char x, int pos )
{
struct nodo *aux = crearNodo(x);
if( pos==1 )
{
if(q.frente == NULL)
{
aux -> sgte = q.frente;
q.frente = aux;
q.final = aux;
}
else
{
aux -> sgte = q.frente;
q.frente = aux;
}
}
else
{
if( q.final==NULL )
{
aux -> sgte = q.final;
q.frente = aux;
q.final = aux;
}
else
{
aux -> sgte = (q.final) -> sgte;
(q.final) -> sgte = aux;
}
}
}
/* Desencolar elemento
----------------------------------------------------------------------*/
char desencolar( struct cola &q, int pos )
{
char __c ;
struct nodo *aux = q.frente;
if( pos==1 )
{
__c = (q.frente) -> dato;
q.frente = aux -> sgte;
delete (aux);
}
else
{
__c = (q.final) -> dato;
/* Mostrar Cola
----------------------------------------------------------------------*/
void muestraCola( struct cola q )
{
struct nodo *aux;
aux = q.frente;
/* Menu de opciones
----------------------------------------------------------------------*/
void menu()
{
cout << "\n\t IMPLEMENTACION DE COLAS DOBLES EN C++\n\n";
cout << " 1. INSERTAR" << endl;
cout << " 2. ELIMINAR" << endl;
cout << " 3. MOSTRAR COLA" << endl;
cout << " 4. SALIR" << endl;
cout << "\n INGRESE OPCION: ";
}
/* Funcion Principal
----------------------------------------------------------------------*/
int main()
{
struct cola q;
q.frente = NULL;
q.final = NULL;
do
{
menu();
cin >> op;
switch(op)
{
case 1:
cout << "\n Ingrese caracter: ";
cin >> c;
encolar( q, c, pos );
break;
case 2:
cout << "\n\t1. Elimina al inicio " <<endl;
cout << "\t2. Elimina al final " <<endl;
cout << "\n\t Opcion : ";
cin >> pos;
x = desencolar( q, pos );
break;
case 3:
cout << "\n\n MOSTRANDO COLA\n\n";
if(q.frente!=NULL)
muestraCola( q );
else
cout << "\n\n\tCola vacia...!" << endl;
break;
case 4:
cout << "\n\n\t***** GRACIAS POR USAR ESTE PROGRAMA
*****" << endl;
}
cout << endl << endl;
system("pause");
system("cls");
}while(op!=4);
return 0;
}
CONCLUSIONES
• Las Colas Dobles nos ofrecen una forma de programar muy útil en
algunos casos e interesante, conocer su estructura y funcionamiento nos
da la capacidad para incluirla en la resolución de problemas según lo
necesitemos.
• Nos ofrecen la libertad de elegir si queremos ingresar elementos al inicio
o al final de la cola y de igual manera si queremos desencolar o eliminar
algún elemento del inicio o el final.
• El ejemplo utilizado para poner en practica las colas dobles fue ingresar
y eliminar elementos a elección del usuario.
BIBLIOGRAFÍA