Practica 6
Practica 6
Practica 6
Laboratorios de computación
salas A y B
Profesor: Manuel Castañeda Castañeda
Grupo: 18
No de Práctica(s): 06
Semestre: 2020-2
Fecha de entrega:
CALIFICACIÓN: _________
Practica 6.
Estructuras de datos lineales: Cola circular y cola doble.
1. Cola Circular:
Análisis de Resultado:
Se podría decir que se podría considerar que el inicio y el final se pueden mover, así
mismo el inicio y final, al llegar al extremo se regresan a la primera posición.
#include <stdio.h>
#include <stdlib.h>
struct queue{
int fin, in;
int arre[5];
};
void crear(queue &cola){
cola.fin=-1;
cola.in=1;
}
bool Vacia(queue cola){
if(cola.fin==1)
return true;
return false;
}
int (obt_element(queue cola)){
if(cola.fin<cola.fin)
return cola.fin-cola.in+1;
return 5-cola.in+cola.fin+1; }
if(cola.fin==5-1){
cola.fin=0;
}
else
cola.fin++;
cola.arre[cola.fin]=dato;
printf("\nSe añadio el elemento: %d", dato);
printf("\n El elemento inicial es %d y el
elemento final es %d", cola.in, cola.fin);
}
else
printf("\nLa cola esta llena");
}
void borrar(queue &cola){
if(!Vacia(cola)){
printf("\nSe ha borrado el
elemento");
if(obt_element(cola)==1)
crear(cola);
else
cola.in++;
}
else
printf("\nLa cola esta vacia, no se pueda borrar");
}
void Mos_cola(queue &cola){
if(!Vacia(cola)){
if(cola.in<cola.fin)
for(int i=0;i<=cola.fin;i++)
printf("\n%d", cola.arre[i]);
else
for(int i=0;i<=cola.fin;i++)
printf("\n%d",cola.arre[i]);
}
}
int main(){
queue cola;
crear(cola);
ingre_dat(cola,10);
ingre_dat(cola,20);
ingre_dat(cola,30);
Mos_cola(cola);
}
#include <stdio.h>
#include <stdlib.h>
#define max 10
struct queue{
int i;
int A[max];
};
void agregar();
void eliminar();
void mostrar();
queue Cola;
int main(){
int op;
Cola.i=-1;
do{
printf("\nQue deseas hacer: \n");
printf("\n1. agregar");
printf("\n2. eliminar");
printf("\n3. mostrar");
printf("\n4. salir\n")
scanf("%d",&op);
switch(op){
case 1: agregar(); break;
case 2: eliminar(); break;
case 3: mostrar(); break;
case 4: printf("hasta la vista");
default: break;
}
}while(op<4);
}
void agregar(){
printf("\n en donde \n");
printf("\n1. inicio\n");
printf("\n2. fin\n");
int op;
scanf("%d",&op);
switch (op){
case 1:
Cola.i++;
for(int j=Cola.i; j>=0; j--)
Cola.A[j+1]=Cola.A[j];
printf("Que dato deseas agregar\n");
scanf("%d", &Cola.A[0]);
break;
case 2:
Cola.i++;
printf("Que dato deseas agregar\n");
scanf("%d",&Cola.A[Cola.i]);
break;
}
}
void eliminar(){
for(int j=0; j<Cola.i;j++)
Cola.A[j]=Cola.A[j+1];
Cola.A[Cola.i]=NULL;
Cola.i--;
}
Conclusión
Visto Cola Circular y Circular Doble, queda claro que es ineficiente una Cola Simple ya que
algunas veces necesitamos que los elementos se muevan en los espacios vacíos, utilizar una
Cola Simple también implica que se utilice más memoria, porque una Cola simple aunque al
eliminar elementos vacía los espacios, al agregar nuevos elementos utiliza nuevos espacios,
entonces ocupa más memoria, Esto es todo lo contrario con una cola Doble.
Entonces suele ser más útil utilizar Cola Circular o Doble, por las funciones.