Como está implementado?

Como está implementado?

por José Coelho de Pina -
Número de respostas: 0

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;
}