PIlhas em C
Antes de programar a solução de um problema que usa uma pilha, precisamos determinar como representar uma pilha usando as estruturas de dados existentes em nossa linguagem de programação. Conforme verificaremos, existem várias maneiras de representar uma pilha em C. Examinaremos agora a mais simples delas. Por todo o livro, você conhecerá outras possíveis representações. Entretanto, eada uma delas é simplesmente uma implemen98
Estruturas de Dados Usando C Cap. 2 tação do conceito introduzido na Seção 2.1. Cada uma tem vantagens e desvantagens, em termos de quão próxima pode refletir o conceito abstrato de uma pilha e quanto esforço o programador e o computador precisarão despender, ao usá-la.
Uma pilha é um conjunto ordenado de itens, e C já contém um tipo de dado que representa um conjunto ordenado de itens: o vetor. Portanto, sempre que a solução de um problema exigir o uso de uma pilha, é tentador iniciar um programa declarando uma variável pilha como um vetor. Contudo, uma pilha e um vetor são duas entidades totalmente diferentes. O número de elementos num vetor é fixado e atribuído pela declaração feita para o vetor.
Em termos gerais, o usuário não pode alterar esse número. Por outro lado, uma pilha é fundamentalmente um objeto dinâmico cujo tamanho está sempre mudando à medida que os itens são desempilhados e empilhados.
Entretanto, mesmo que um vetor não seja uma pilha, ele pode ser a casa de uma pilha. Ou seja, um vetor pode ser declarado suficientemente grande para armazenar o tamanho máximo da pilha. Durante a execução do programa, a pilha pode aumentar e diminuir dentro do espaço reservado para ela. Uma extremidade do vetor é o final fixo da pilha, enquanto o topo da pilha se desloca constantemente, com a eliminação e a inclusão de itens.
Dessa forma, é necessário outro campo que, em cada ponto da execução do programa, rastreie a atual posição do topo da pilha.
Uma pilha em C pode, por conseguinte,