14
UNIVERSIDADE FEDERAL DO AMAZONAS- UFAM INSTITUTO DE CIÊNCIAS EXATAS E TECNOLOGIA- ICET SISTEMAS DE INFORMAÇÃO ALGORITMOS E ESTRUTURAS DE DADOS II PILHAS ACADÊMICOS: Eurimar Lemos Joicilene Nunes Katlhen Maciel Márcio Dias DEZEMBRO de 2011

UNIVERSIDADE FEDERAL DO AMAZONAS- UFAM INSTITUTO DE CIÊNCIAS EXATAS E TECNOLOGIA- ICET SISTEMAS DE INFORMAÇÃO ALGORITMOS E ESTRUTURAS DE DADOS II PILHAS

Embed Size (px)

Citation preview

Page 1: UNIVERSIDADE FEDERAL DO AMAZONAS- UFAM INSTITUTO DE CIÊNCIAS EXATAS E TECNOLOGIA- ICET SISTEMAS DE INFORMAÇÃO ALGORITMOS E ESTRUTURAS DE DADOS II PILHAS

UNIVERSIDADE FEDERAL DO AMAZONAS- UFAMINSTITUTO DE CIÊNCIAS EXATAS E TECNOLOGIA-

ICETSISTEMAS DE INFORMAÇÃO

ALGORITMOS E ESTRUTURAS DE DADOS II

PILHASACADÊMICOS: Eurimar Lemos Joicilene Nunes Katlhen Maciel Márcio Dias Yasmim Ehm

DEZEMBRO de 2011

Page 2: UNIVERSIDADE FEDERAL DO AMAZONAS- UFAM INSTITUTO DE CIÊNCIAS EXATAS E TECNOLOGIA- ICET SISTEMAS DE INFORMAÇÃO ALGORITMOS E ESTRUTURAS DE DADOS II PILHAS

CONCEITO/ FUNDAMENTOSPILHA : Uma das estruturas de dados linear mais simples é a

pilha. Possivelmente por essa razão, é a estrutura de dados mais utilizada em programação, sendo inclusive implementada diretamente pelo hardware da maioria das máquinas modernas.

Itacoatiara-AM

Page 3: UNIVERSIDADE FEDERAL DO AMAZONAS- UFAM INSTITUTO DE CIÊNCIAS EXATAS E TECNOLOGIA- ICET SISTEMAS DE INFORMAÇÃO ALGORITMOS E ESTRUTURAS DE DADOS II PILHAS

PILHA ESTÁTICA: também chamada de seqüencial, os elementos desta pilha são armazenados em endereços seqüenciais. Materializada na forma de um vetor (arranjo ou matriz).

1.Um vetor de elementos (tamanho pré-definido).2.Uma variável que controle o topo da pilha.

PILHA DINÂMICA: ou encadeada, elementos encadeados por ponteiros. Cada elemento possui pelo menos dois campos: um para armazenar a informação e outro para o endereço do próximo (ponteiro), tudo com alocação dinâmica.

1.Uma struct representando um nó da pilha (dado e ponteiro para o próximo nó da pilha).

2.Um ponteiro para o 1º nó representando a pilha.O primeiro elemento (início) da lista encadeada irá representar

o topo atual da pilha.Itacoatiara-AM

Page 4: UNIVERSIDADE FEDERAL DO AMAZONAS- UFAM INSTITUTO DE CIÊNCIAS EXATAS E TECNOLOGIA- ICET SISTEMAS DE INFORMAÇÃO ALGORITMOS E ESTRUTURAS DE DADOS II PILHAS

COMO FUNCIONA?Podemos fazer uma analogia com uma pilha de pratos em um restaurante1. Se quisermos adicionar um prato na pilha, o colocamos no topo

da pilha de pratos.2. Para pegar um prato da pilha, retiramos o do topo.

Ou ainda: um software que implemente a função UNDO (o famigerado “Crtl+Z”).

3. A última ação feita será a primeira a ser desfeita.4. Não podemos retirar qualquer ação, segue-se a ordem.5. Não podemos inserir uma ação na pilha de ações, caso ela não

se torne a última.

Itacoatiara-AM

Page 5: UNIVERSIDADE FEDERAL DO AMAZONAS- UFAM INSTITUTO DE CIÊNCIAS EXATAS E TECNOLOGIA- ICET SISTEMAS DE INFORMAÇÃO ALGORITMOS E ESTRUTURAS DE DADOS II PILHAS

Exemplo Pilha Estática

ABC

AB

AB

A

Itacoatiara-AM

Desempilha C

Page 6: UNIVERSIDADE FEDERAL DO AMAZONAS- UFAM INSTITUTO DE CIÊNCIAS EXATAS E TECNOLOGIA- ICET SISTEMAS DE INFORMAÇÃO ALGORITMOS E ESTRUTURAS DE DADOS II PILHAS

PPot PFis PCi

êPHis

Vazio

Exemplo Pilha Dinâmica

AuxAux

Page 7: UNIVERSIDADE FEDERAL DO AMAZONAS- UFAM INSTITUTO DE CIÊNCIAS EXATAS E TECNOLOGIA- ICET SISTEMAS DE INFORMAÇÃO ALGORITMOS E ESTRUTURAS DE DADOS II PILHAS

Pilha3 operações básicas: Consulta: acessa o elemento

posicionado no topo; Empilha: insere um novo elemento no

topo; Desempilha: remove um elemento do

topo.

3 operações essenciais: Inicializa: inicializa a pilha no estado

“vazia”; EstaVazia: verifica se a pilha está vazia; EstaCheia: verifica se a pilha está cheia;

Page 8: UNIVERSIDADE FEDERAL DO AMAZONAS- UFAM INSTITUTO DE CIÊNCIAS EXATAS E TECNOLOGIA- ICET SISTEMAS DE INFORMAÇÃO ALGORITMOS E ESTRUTURAS DE DADOS II PILHAS

Operações BásicasDefinição da

Estrutura

#define m 10

struct Pilha { int topo; int elem[m];};

Inicializar uma Pilhavoid iniciaPilha

(struct Pilha *P){ P->topo=-1; }

Empilhar na Pilhavoid empilhar(struct

Pilha *P, int x){ if (P->topo== m-1) printf(“Pilha

Cheia”); else { P->topo++; P->elem[P-

>topo]=x; } }

Itacoatiara-AM

Page 9: UNIVERSIDADE FEDERAL DO AMAZONAS- UFAM INSTITUTO DE CIÊNCIAS EXATAS E TECNOLOGIA- ICET SISTEMAS DE INFORMAÇÃO ALGORITMOS E ESTRUTURAS DE DADOS II PILHAS

Operações Básicas

void desempilha (struct Pilha *P)

{ if (P->topo==-1) printf(“Pilha

Vazia”); else { P->topo--; } }

Consulta o elemento da pilhaint topo (struct Pilha

*P){ int x; if (P->topo==-1) printf(“Pilha

Vazia”); else { x=P->elem[P-

>topo]; return (x); } }

Itacoatiara-AM

Desempilha da Pilha

Page 10: UNIVERSIDADE FEDERAL DO AMAZONAS- UFAM INSTITUTO DE CIÊNCIAS EXATAS E TECNOLOGIA- ICET SISTEMAS DE INFORMAÇÃO ALGORITMOS E ESTRUTURAS DE DADOS II PILHAS

Itacoatiara-AM

Demonstrando um algoritmo de pilha estática.

Page 11: UNIVERSIDADE FEDERAL DO AMAZONAS- UFAM INSTITUTO DE CIÊNCIAS EXATAS E TECNOLOGIA- ICET SISTEMAS DE INFORMAÇÃO ALGORITMOS E ESTRUTURAS DE DADOS II PILHAS

Itacoatiara-AM

APLICAÇÃOExemplo: utilização de uma pilha para garantir o correto

agrupamento de parênteses, colchetes e chaves em uma expressão matemática.

1.Verificar se existe um número igual de símbolos abrindo e fechando de cada tipo.2.Verificar se todo símbolo fechando está precedido de um abrindo do mesmo tipoEx.: ((A+B ou A+B( violam o critério 1

)A+B( ou (A+B)) violam o critério 2 (A+B] ou {A-(B]} violam os 2 critérios

1. Percorrer toda a expressão:•A cada símbolo abrindo, empilhar.•A cada símbolo fechando, desempilhar e verificar se é do mesmo tipo .2. Expressão válida:•se ao final, a pilha estiver vazia3. Expressão inválida:•se houver uma tentativa de desempilhar com a pilha vazia;•se o símbolo desempilhado for diferente do atual ou•se ao final a pilha NÃO estiver vazia.

Page 12: UNIVERSIDADE FEDERAL DO AMAZONAS- UFAM INSTITUTO DE CIÊNCIAS EXATAS E TECNOLOGIA- ICET SISTEMAS DE INFORMAÇÃO ALGORITMOS E ESTRUTURAS DE DADOS II PILHAS

APLICAÇÕES• Adequadas ao processamento de estruturas aninhadas de

profundidade imprevisível;sintaxe de expressões aritméticas.controle da seqüência de chamadas de expressões aritméticas.• Controle de recursividade;• Percurso em árvores.

Itacoatiara-AM

Page 13: UNIVERSIDADE FEDERAL DO AMAZONAS- UFAM INSTITUTO DE CIÊNCIAS EXATAS E TECNOLOGIA- ICET SISTEMAS DE INFORMAÇÃO ALGORITMOS E ESTRUTURAS DE DADOS II PILHAS

PARA QUE SERVE?É utilizado para problemas que envolvam seqüência de ações a serem realizadas. Ou seja, onde não há possibilidade de pular etapas.

Itacoatiara-AM

Page 14: UNIVERSIDADE FEDERAL DO AMAZONAS- UFAM INSTITUTO DE CIÊNCIAS EXATAS E TECNOLOGIA- ICET SISTEMAS DE INFORMAÇÃO ALGORITMOS E ESTRUTURAS DE DADOS II PILHAS

Itacoatiara-AM

Bibliografia1. SILVA, Osmar Quirino da. Estruturas de Dados e

Algoritmos Usando C – Fundamentos e Aplicações. Rio de Janeiro: Editora Ciência Moderna Ltda.,2007

2. PEREIRA, Silvio do Lago. Estruturas de Dados Fundamentais. Conceitos e Aplicações. 11ª Edição. São Paulo: Érica, 2008.