Problema com enqueue e dequeue

1. Problema com enqueue e dequeue

Carlos Henrique Ximenes
HeNRiQueZ1M

(usa Ubuntu)

Enviado em 07/10/2011 - 13:02h

Boa tarde, sou novo na parte de programação em C e estou com o seguinte problema:

Tenho que criar um programa que gera senhas com uma determinada prioridade para banco.
Estou usando o seguinte void para adicionar novas senhas:

void enqueue(fila **ag, float s, int p)
{
fila *novo, *aux;
novo = (fila*)malloc(sizeof(fila));
novo->prox = NULL;
novo->senha = s;
novo->prio = p;
if (*ag == NULL)
{
*ag = novo;
}
else
{
aux = *ag;
while(novo->prio > aux->prio && aux->prox != NULL)
{
while(novo->senha < aux->senha && aux->prox != NULL)
{
aux=aux->prox;
}
aux->prox = novo;
}
}
}

Não sei se esses whiles estão certos, mas minha intenção é adicionar ao topo a senha com menor valor e menor prioridade.

Esse é o comando para mostrar a 1ª senha e eliminá-la.

void dequeue(fila **ag)
{
fila *topo;
int p;
float s;
topo = *ag;
if (topo == NULL)
{
printf(">> Não há senhas a serem chamadas\n");
}
else
{
p = topo->prio;
s = topo->senha;
printf("\n>> Senha Chamada: %3.2f - Prioridade: %d\n",s,p);
*ag = topo->prox;
}
}

Tudo parece estar OK, porém, quando eu adiciono 2 senhas e peço pra ele mostrar a primeira, dá certo, porém, ao usar o comando novamente para mostrar a 2ª senha (que agora é a 1ª) ele dá a mensagem:
">> Não há senhas a serem chamadas"

Alguem poderia me ajudar a achar o erro?

Obrigado.


  






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts