colas

Iniciado por ponchado, 13 Marzo 2017, 00:17 AM

0 Miembros y 1 Visitante están viendo este tema.

ponchado

AYUDA: como le hago para que me pida los valores de la cola, me vaya mostrando los datos agregados y la cola



#include <stdio.h>

#define MAX_SIZE 50


struct tcola
{
 int elems;
 int entrada, salida;
 int elementos[MAX_SIZE];
};


//Creación:

void crear(struct tcola *cola)
{
 cola->elems = cola->salida = cola->entrada = 0;
}

//Función que devuelve verdadero si la cola está vacía:

int vacia(struct tcola *cola)
{
 return (cola->elems == 0);
}

//Función que devuelve verdadero si la cola está llena:

int llena(struct tcola *cola)
{
 return (cola->elems == MAX_SIZE);
}

//Encolado:

void encolar(struct tcola *cola, int elem)
{
 cola->elems++;
 cola->elementos[cola->entrada++] = elem;
 if (cola->entrada == MAX_SIZE)
   cola->entrada = 0;
}

//Desencolado:

void desencolar(struct tcola *cola, int *elem)
{
 cola->elems--;
 *elem = cola->elementos[cola->salida++];
 if (cola->salida == MAX_SIZE)
   cola->salida = 0;
}



int main(void)
{
 struct tcola cola;
 int elem;

 crear(&cola);
 if (vacia(&cola)) printf("\nCola vacia.");
 if (llena(&cola)) printf("\nCola llena.");
 encolar(&cola, 1);
 desencolar(&cola, &elem);
 return 0;
}



· Los códigos deben ir en etiquetas GeSHi
>aquí las reglas del foro
-Engel Lex

Kenji-chan

#1
supongo que el elemento a encolar es el int elem; que se encuera en la función main()
lo que tienes que hacer es pedir el dato del elemento antes de llamar a la funcion encolar(struct tcola *cola, int elem) pero recuerda que para encolar un elemento simpre tiene que ir al fina de la cola pero si la cola esta vacía lo colocas en la cabeza y ya pero en la linea 40 cola->elementos[cola->entrada++] = elem; te estas saltando la caveza de tu cola, y para desencolar simpre lo haremos con la caveza operamos y luego la eliminamos pero tu lo único que haces es reducir el valor de la variable que contiene el tamaño de la cola

ponchado

me ayudas a corregirlo, lo he intendo por horas y no puedo

Kenji-chan

sabes lo que es la memoria dinámica??

ponchado

#4
si, si se que es, tengo que definir, no se por ejemplo el tamaño que me reserva en la memoria para la cola?


ponchado

es que el programa ya es para mañana :(