
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.