• Viernes 24 de Mayo de 2024, 17:50

Autor Tema:  COLA CIRCULAR  (Leído 11212 veces)

chinita mmm

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
COLA CIRCULAR
« en: Lunes 27 de Septiembre de 2010, 03:08 »
0
HOLA A TODOS ME GUSTARIA SABER SI ME PODRIAN AYUDAR A ENCONTRAR EN QUE ES LO QUE ESTOY FALLANDO PORQUE HE TRATADO DE HACER UNA COLA CIRCULAR PERO UTILIZANDO ARRAY Y ME DA 6 ERRORES Y NO LE ENCUENTRO EL PORQUE.
GRACIAS DESDE ANTE MANO.

#include <stdio.h>
#include <conio.h>
#include <iostream>
using namespace std;
#define  MAX_COLA 50
typedef int tipodato;

typedef  struct {
   int elems;
   int final, frente;
   tipodato elementos[MAX_COLA];
} colacir;
/*  inicializa la cola */
void crearcola(colacir &cola);
/* retorna el indice del siguiente elemento */
int siguiente(int i);
/* retorna 1 si la cola esta vacia */
int vacia(colacir cola);
/*retorna 1 si la cola esta llena*/
int llena(colacir cola);
/* inserta un elemento al final de la cola*/
void encolar(colacir *cola,tipodato elem);
/* retira el elemento del inicio de la col*/
tipodato desencolar(colacir &cola);
/* obtiene el elmento del inicio de la cola */
tipodato frente(colacir cola);
/* reporta todos los elementos de la cola */
void visualizar(colacir cola);
/** DESARROLLO DE FUNCIONES  **/
void crearcola(colacir &cola)
{
   cola.elems = cola.frente = 0;
   cola.final =MAX_COLA-1;
}
int siguiente(int i)
{  
   return ((i+1) % MAX_COLA);
}
int vacia(colacir cola)
{    
   return (cola.elems == 0);
}
int llena(colacir cola)
{
   return (cola.elems == MAX_COLA);
}
void encolar(colacir &cola, tipodato elem)
{
   cola.elems++;
   cola.final=siguiente( cola.final);
   cola.elementos[cola.final] = elem;
}
tipodato desencolar(colacir &cola)
{
   int elem;
   cola.elems--;
   elem = cola.elementos[cola.frente];
   cola.frente=siguiente(cola.frente);
   return elem;
}
tipodato frente(colacir cola)
{  
   return cola.elementos[cola.frente];
}
void visualizar(colacir cola)
{
   if(!vacia(cola))  
   {      
      cout<<desencolar(cola);
      cout<<"  ";      
      visualizar(cola);  
   }
}

void main()
{
   struct colacir C;
   char op;
   int num;
   crearcola(&C);
   do
   {
      system("cls");
      system("color 09");
      puts("nnntttSIMULACION DE UNA COLA CIRCULAR");
      puts("nnttt1) Agregar un elemento");
      puts("nnttt2) Sacar un elemento");
      puts("nnttt3) Salida");
      printf("nntttOpcion: ");
      op=getche();
      system("cls");
      switch(op)
      {
      case '1':
         if(!llena(C) )
         {
            system("color 05");
            printf("nnnnnnttt");
            printf("Dato:");
            scanf("%d",&num);
            encolar(&C,num);
         }
         else
         {
            system("color 02");
            printf("nnnntttCola LLena");
            getch();
         }
         break;
      case '2':
         system("color 04");
         if(!vacia(C) )
            printf("nnnntttDato extraido:  %d",desencolar(&C));
         else
            printf("nnnntttNo hay datos");
         getch();
         break;
      case '3':
         system("color 03");
         puts("nnnntttHASTA PRONTO MIL BENDICIONESnnnnttt");
         break;
      }
   }
   while(op!='3');
   printf("nnttt");
}

Epa

  • Miembro MUY activo
  • ***
  • Mensajes: 242
  • Nacionalidad: ar
    • Ver Perfil
Re: COLA CIRCULAR
« Respuesta #1 en: Martes 28 de Septiembre de 2010, 04:30 »
0
Buenas.

Usa etiquetas de codigo, la verdad que no dan ganas de leer ese codigo.

Antes de ponerte a hacer lsitas circulares (diria que las colas circulares no exiten, ya que hay habria coneptos que se contradicen), investiga de punteros.
Las listas circulares son estructuras DINAMICAS de datos.

Saludos
The sweet smell of a great sorrow lies over the land.


herzdark

  • Miembro activo
  • **
  • Mensajes: 38
  • Nacionalidad: ar
    • Ver Perfil
Re: COLA CIRCULAR
« Respuesta #2 en: Domingo 14 de Noviembre de 2010, 05:29 »
0
tiene mucha razon implementar estaticamente una cola circular se puede pero lo normal es hacerla dinamicamente con un lista y para eso se necesitan los tediosos punteros.
aca te tiro como seria la estructura de datos y las primitivas pensalas vos.

Código: C
  1.  
  2.  typedef struct s_nodo
  3.   {t_dato inf;
  4.    struct s_nodo *sig;
  5.   }t_nodo;
  6.  
  7. typedef t_nodo * t_cola;
  8.  
  9.  
  10.  
pd: a mi tambien me mandaron a hacer una cola circular y despues agregaron una pila circular  :D