Então, hoje vou demonstrar um dos outros exercicios que fizemos na aula de estrutura de dados, lembrando mais uma vez que estes são exercicios que eu faço rapidamente e não me importo muito com várias coisas pela falta de tempo. O que irei mostrar hoje é uma Pilha com vetores porém em vez de ele ter um inteiro indicando o ultimo elemento, o ultimo será um ponteiro para o ultimo elemento da pilha.
Para ver o enunciado inteiro continue lendo (enunciado grande).
Para baixar o arquivo, clique aqui!
Reimplemente o seu programa de pilha com vetor de números inteiros usando como TOPO um ponteiro para inteiro, que você incrementa, decrementa e testa
para saber se a pilha está cheia ou vazia;
• para resolver:
– modifique a estrutura tPilha da seguinte forma:
constantes MAXPILHA = 100;
tipo tPilha {
inteiro dados[MAXPILHA];
inteiro *topo;
};• Modifique os algoritmos de manipulação da pilha de forma que se utilize ponteiros para inteiro para referenciar os elementos da pilha.
• Exemplo:
Inteiro FUNÇÃO empilha(inteiro dado)
início
SE (pilhaCheia) ENTÃO
RETORNE(ErroPilhaCheia)
SENÃO
// Se houver espaço, incremento o
// ponteiro topo e faço o valor
// apontado por topo receber o novo
// dado.
aPilha.topo <- aPilha.topo + 1; *(aPilha.topo) <- dado; RETORNE(aPilha.topo); FIM SE fim; • Lembre-se de adaptar a inicialização da pilha e também os testes de pilha cheia e vazia. Exemplos: FUNÇÃO inicializaPilha() início // Fazemos o topo apontar para um endereço de memória // anterior ao início do vetor dados para simbolizar // que a pilha está vazia. aPilha.topo <- aPilha.dados - 1; fim; Booleano FUNÇÃO pilhaVazia() início SE (aPilha.topo < aPilha.dados) ENTÃO // O topo está apontando para um endereço de // memória anterior ao próprio início da // pilha. Segundo a nossa definição, isto // significa que a pilha está vazia. RETORNE(Verdadeiro) SENÃO RETORNE(Falso); fim;
Be First to Comment