Problemas com a Fila. Com ou sem cabeça?

Problemas com a Fila. Com ou sem cabeça?

por Gustavo Estrela de Matos -
Número de respostas: 1

Estava trabalhando na função eval quando tive alguns problemas de seg. fault. Então, olhando na descrição das funções acabei ficando confuso com o seguinte:

"Ao final a funcao retorna o endereco da celula no topo da
pilha de execucao. " : eval.c

"resultado = eval(iniFila, mostrePilhaExecucao);

/* 4.9 mostre o resultado/valor da expressao */
if (resultado)
{
printf("Resultado: %f\n", resultado->vFloat);
freeUtil(resultado);
}" :main.c

"Recebe uma lista com cabeca iniLista de celulas do tipo 

CelUtil e libera a area alocada por esta lista.": util.c

O problema é que se na função eval eu retornar com cabeça, o resultado no main.c vai pegar o valor da cabeça. Se eu retornar sem cabeça, o resultado pega o valor certo, mas aí a função que dá free no util.c não receberá uma lista com cabeça.

Será que não podemos mudar o escopo da função que dá free, ou seria melhor mudar as linhas que mostram o resultado?

Em resposta à Gustavo Estrela de Matos

Re: Problemas com a Fila. Com ou sem cabeça?

por Gustavo Estrela de Matos -

Problema resolvido!
Eu achei que o main.c chamava freeListaUtil() que recebe uma lista com cabeça e dá free. Porém o main.c chama a freeUtil, que recebe e dá free numa célula única... Resumindo, devolver o endereço da própria célula na função eval.