You are on page 1of 38

Roteiro

Execuco de programas (estruturas de prioridade) Pilhas Pilhas como vetor Pilhas como Lista Encadeada TAD Exemplo: Calculadora com lgica polonesa

dibio@unb.br

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; }
dibio@unb.br

Como os valores so carregados e guardados em ordem? Como as operaces so executadas na ordem? Qual estrutura organiza essa sequncia prioritria de tarefas? Como modelar tal estrutura?

dibio@unb.br

Pilhas

A idia fundamental da pilha que todo o acesso a seus elementos feito atravs 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)

dibio@unb.br

Uso/aplicaces

Ex: O exemplo de utilizao de pilha mais prximo a prpria pilha de execuo da linguagem C. As variveis locais das funes so dispostas numa pilha e uma funo s tem acesso s variveis que esto no topo (no possvel acessar as variveis da funo locais s outras funes). Operaces ps-fixas Editores de texto ...

dibio@unb.br

Funcionamento de uma pilha

dibio@unb.br

Exemplo (Pilha de Execuo de funes)

dibio@unb.br

Exemplo (execuo de funes)

dibio@unb.br

Operaes bsicas

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.

dibio@unb.br

TAD em C

dibio@unb.br

Implementao como um Vetor

dibio@unb.br

Criar estrutura de pilha

dibio@unb.br

Insero

dibio@unb.br

Remoo

dibio@unb.br

Testar se pilha est vazia

dibio@unb.br

Libera memria de pilha

dibio@unb.br

Outras funes (pilha com Vetor)

dibio@unb.br

Implementao de pilha com Lista Encadeada

dibio@unb.br

Criar pilha (com Lista)

dibio@unb.br

Inserir elemento

dibio@unb.br

Retirar elemento (desempilhar)

dibio@unb.br

Testa se pilha est vazia

dibio@unb.br

Libera memria de pilha

dibio@unb.br

Outras funces (pilha com Lista)

dibio@unb.br

Exemplo: Notao polonesa (ou calculadora com notao ps-fixa)

dibio@unb.br

Exemplo

dibio@unb.br

Criando funes da TAD (Exemplo)

dibio@unb.br

Criaco a partir da pilha

dibio@unb.br

Exemplo

dibio@unb.br

Exemplo (empilhar)

dibio@unb.br

Exemplo

dibio@unb.br

Exemplo (desempilhar)

dibio@unb.br

cont...calcula

dibio@unb.br

Exemplo (programa)

dibio@unb.br

cont...programa

dibio@unb.br

Exemplo de uso

dibio@unb.br

Exerccio para casa

Estender a funcionalidade da calculadora ps-fixa com operaces de: (- unrio), exponenciaco, raiz quadrada.

dibio@unb.br

Referncias

Celes, W.; Cerqueira, R. & Rangel, J.L. Introduco a Estruturas de Dados, Editora Campus (Elsevier), RJ, 2004. Cormen, T.; Leiserson, C. & Rivest, R. Algoritmos: teoria e prtica, Campus Editora, RJ, 2002. Tenenbaum, A.; Langsam, Y. & Augenstein, M. Estruturas de Dados usando C, Makron Books, RJ, 1995.

dibio@unb.br

You might also like