Utilizo Turbo C++
Código:
#include <stdio.h>
#include <conio.h>
const int N=2;
struct cola {
char datos[N];
int frente,atras;
};
//Funciones//
int cola_vacia(struct cola c);
int cola_llena(struct cola c);
void inicializacion(struct cola &c);
void encolar(char x, struct cola &c);
char desencolar(struct cola &c);
int espacios_vacios(struct cola &c );
int espacios_llenos(struct cola c);
char atras(struct cola c);
char frente(struct cola &c);
void menu(void);
void menu(void){
int op,pocicion;
char d,s,x,v,b;
cola c;
inicializacion(c);
do{
clrscr();
gotoxy(5,0);printf("BIENVENIDO AL MENU PRINCIPAL\n\n");
gotoxy(5,3);printf("1).- Encolar");
gotoxy(5,5);printf("2).- Desencolar\n\n");
gotoxy(5,7);printf("3).- Atras\n\n");
gotoxy(5,9);printf("4).- Cola vacia\n\n");
gotoxy(5,11);printf("5).- Cola llena\n\n");
gotoxy(5,13);printf("6).- Inicializacion\n\n");
gotoxy(5,15);printf("7).- Espacios vacios\n\n");
gotoxy(5,17);printf("8).- Espacios ocupados\n\n");
gotoxy(5,19);printf("9).- Frente\n\n");
gotoxy(5,21);printf("10).- Salir\n\n");
gotoxy(5,23);printf("******DIGITE SU OPCION******: ");
fflush(stdin);
scanf("%d",&op);
switch(op)
{
case 1:
clrscr();
gotoxy(20,2);
printf("**********Encolar**********\n\n");
if(cola_llena(c))
printf("Error... Sobreflujo...");
else {
printf("\nEscribe el dato a encolar: ");
fflush(stdin);
scanf("%c",&d);
encolar(d, c);
printf("El dato %c ha sido encolado...", d);
}
break;
case 2:
clrscr();
gotoxy(20,2);
printf("**********Desencolar**********\n\n");
if(cola_vacia(c))
printf(" \n Error bajoflujo...");
else
{
s = desencolar(c);
printf("\n\n El elemento que salio es [%c]",s);
}
break;
case 3:
clrscr();
gotoxy(20,2);
printf("**********Atras**********\n\n");
if(cola_vacia(c))
printf("\n Error bajoflujo...");
else
{
atras(c);
printf("Atras es %c y esta en la posicion [%d]");
}
break;
case 4:
int vac;
clrscr();
gotoxy(20,2);
printf("**********Modulo de cola vacia**********\n\n");
vac=cola_vacia(c);
if(vac==1)
printf("\n Bajoflujo....");
else
printf("\n La cola no esta vacia");
break;
case 5:
clrscr();
gotoxy(20,2);
printf("**********Modulo de cola llena**********\n\n");
if(cola_llena(c))
printf("\n\n... Sobreflujo...");
else
printf("\n\nLa cola no esta llena");
break;
case 6:
clrscr();
gotoxy(20,2);
printf("**********Modulo de inicializacion**********\n\n");
inicializacion(c);
//inicializacion(c);
printf("\nLa cola ha sido inicializada");
break;
case 7:
clrscr();
gotoxy(20,2);
printf("**********Espacios Vacios**********\n\n");
v=espacios_vacios( c );
printf ("Existen %d espacios vacios",v);
break;
case 8:
clrscr();
gotoxy(20,2);
printf("**********Espacios ocupados**********\n\n");
s=espacios_llenos( c );
printf ("Existen %d espacios ocupados",s);
break;
case 9:
clrscr();
gotoxy(20,2);
printf("**********Frente********** \n\n");
if(cola_vacia(c))
printf("\n Error bajoflujo...");
else{
b=frente(c);
printf("Frente es %c ",b);
}
break;
case 10:
clrscr();
gotoxy(30,12);
printf("Gracias");
break;
default:
printf("\nOpcion equivocada...");
}
getch();
}while(op!=10);
return;
}
int cola_vacia(struct cola c)
{
if (c.atras==-1)
return 1;
else
return 0;
}
int cola_llena(struct cola c)
{
if(c.atras == N-1)
return 1;
else
return 0;
}
void inicializacion(struct cola &c) {
c.atras=-1;
return;
}
void encolar(char x, struct cola &c) {
c.atras++;
c.datos[c.atras]=x;
return;
}
char desencolar(struct cola &c) {
int i,z;
z=c.datos[0];
for(i=0;i<=c.atras;i++){
c.datos[i]=c.datos[i+1];
c.atras--;
return z; }
}
int espacios_vacios(struct cola &c ) {
return ((N-1)-c.atras);
}
int espacios_llenos(struct cola c){
return c.atras + 1;
}
char atras(struct cola c){
return (c.datos[c.atras]);
}
char frente(struct cola &c){
return c.datos[0];
}
Código:
#include <c:\TCWIN45\BIN\colas.h>
void main()
{
menu();
return;
}