aula pil has
TRANSCRIPT
Roteiro
● Execucão de programas (estruturas de prioridade)● Pilhas● Pilhas como vetor● Pilhas como Lista Encadeada● TAD● Exemplo: Calculadora com lógica polonesa
Observem um Programinha em C...
#include<stdio.h>int main (void) {int a, b, c, d;scanf(“ %d %d %d\n”, &b, &c, &d);a = b + c * d;printf(“\n a: %d\n”, a);return 0;}
● Como os valores são carregados e guardados em ordem?
● Como as operacões são executadas na ordem?● Qual estrutura organiza essa sequência prioritária
de tarefas?● Como modelar tal estrutura?
Pilhas
● A idéia fundamental da pilha é que todo o acesso a seus elementos é feito através do seu topo. Assim, quando um elemento novo é introduzido na pilha, passa a ser o elemento do topo, e o único elemento que pode ser removido da pilha é o do topo.
● LIFO (Last In, First Out)
Uso/aplicacões
● Ex: O exemplo de utilização de pilha mais próximo é a própria pilha de execução da linguagem C. As variáveis locais das funções são dispostas numa pilha e uma função só tem acesso às variáveis que estão no topo (não é possível acessar as variáveis da função locais às outras funções).
● Operacões pós-fixas● Editores de texto● ...
Funcionamento de uma pilha
Exemplo (Pilha de ExecuÇão de funÇões)
Exemplo (execuÇão de funÇões)
OperaÇões básicas
● criar uma estrutura de pilha;● inserir um elemento no topo (push);● remover o elemento do topo (pop);● verificar se a pilha está vazia;● liberar a estrutura de pilha.
TAD em C
ImplementaÇão como um Vetor
Criar estrutura de pilha
InserÇão
RemoÇão
Testar se pilha está vazia
Libera memória de pilha
Outras funÇões (pilha com Vetor)
ImplementaÇão de pilha com Lista Encadeada
Criar pilha (com Lista)
Inserir elemento
Retirar elemento (desempilhar)
Testa se pilha está vazia
Libera memória de pilha
Outras funcões (pilha com Lista)
Exemplo: NotaÇão polonesa (ou calculadora com notaÇão pós-fixa)
Exemplo
Criando funÇões da TAD (Exemplo)
Criacão a partir da pilha
Exemplo
Exemplo (empilhar)
Exemplo
Exemplo (desempilhar)
cont...calcula
Exemplo (programa)
cont...programa
Exemplo de uso
Exercício para casa
● Estender a funcionalidade da calculadora pós-fixa com operacões de: (- unário), exponenciacão, raiz quadrada.
Referências
● Celes, W.; Cerqueira, R. & Rangel, J.L. Introducão a Estruturas de Dados, Editora Campus (Elsevier), RJ, 2004.
● Cormen, T.; Leiserson, C. & Rivest, R. Algoritmos: teoria e prática, Campus Editora, RJ, 2002.
● Tenenbaum, A.; Langsam, Y. & Augenstein, M. Estruturas de Dados usando C, Makron Books, RJ, 1995.