Ois,
A seguir está uma função que usa uma pilha. Alguém pode me dizer como a pilha esta implementada? Vetor? Lista encadeada duplamente encadeada com cabeça? Lista encadeada sem cabeça? Todas as anteriores?
double
eval(char *posf)
{
Stack s = stackInit(strlen(posf));
double resultado;
for ( ; *posf ; posf++)
{
if (*posf == ' ') continue;
if ('a' <= *posf && *posf <= 'z')
{
stackPush(s, getValor(*posf));
}
else
{
double valor1 = stackPop(s);
double valor2 = stackPop(s);
if (*posf == '+')
{
stackPush(valor1 + valor2);
}
else if (*posf == '-')
{
stackPush(valor1 - valor2);
}
else if (*posf == '*')
{
stackPush(valor1 * valor2);
}
else if (*posf == '/')
{
stackPush(valor1 / valor2);
}
}
}
resultado = stackPop(s);
stackFree(s);
return resultado;
}