Você está na página 1de 23

Estruturas de Dados

Pilhas, Filas e Deques


Prof. Eduardo Alchieri

Estruturas de Dados

Pilhas

Pilhas

Lista LIFO (Last In, First Out) Os elementos so colocados na estrutura (pilha) e retirados em ordem inversa a de sua chegada Inser o apenas no topo da pilha

!emo o apenas no topo da pilha

Pilhas

Opera oes poss"veis# Esva$iar a pilha

%erificar se a pilha est& va$ia 'olocar um dado no topo da pilha (empilhar) !etirar o dado do topo da pilha (desempilhar) Etc.

Pilhas

Implementa o de pilhas

(sando vetores

Pode)se implementar uma pilha de tamanho fi*o usando vetores. Este tamanho determinar& o n+mero m&*imo de elementos ,ue podero estar na pilha ao mesmo tempo - necess&rio um inteiro para arma$enar o valor da posi o do vetor aonde encontra)se o topo da pilha A implementa o de uma pilha ,ue usa como estrutura .&sica uma lista ligada / mais simples, pois a lista no / uma estrutura de tamanho fi*o 0asicamente, os dados devem ser colocados (empilhados) em alguma das e*tremidades da lista e retirados (desempilhados) a partir desta mesma e*tremidade

(sando uma lista ligada

Pilhas

- ideal para processamento de estruturas aninhadas de profundidade imprevis"vel (ma pilha cont/m uma se,u1ncia de o.riga 2es adiadas. A ordem de remo o garante ,ue os dados mais internos sero processados depois dos mais e*ternos

3uando / necess&rio percorrer um con4unto de dados e guardar uma lista de coisas a fa$er posteriormente O controle de se,u1ncias de chamadas de su.programas A sinta*e de e*press2es aritm/ticas

Pilhas

Aplica 2es

'ontrole de delimitadores em uma e,ua o (rastrear escopo)# 5(A 6 0) 7 ' 6 (8 6 E)9:F 6 ;< 6 => 9 I Algoritmo# Percorrer a e,ua o da seguinte forma# ? @ se um iniciali$ador de escopo for encontrado, o mesmo / empilhado A @ se um finali$ar de escopo for encontrado, a pilha / verificada Be estiver va$ia, ento a e,ua o / incorreta Be no, desempilhar e comparar com o finali$ador Ao final, a pilha deve estar va$ia

Pilhas

Aplica 2es

!ecursividade A solu o de um pro.lema depende da solu o de instCncias menores do mesmo pro.lema

Pilhas

Aplica 2es

3uanto / fatorial(D) E

Pilhas

Aplica 2es

Avalia o de e*press2es posfi*as (Fra.alho ?) Gota o infi*a (/ a usual)# (H 6 I) 7 A 6 J 7 H Os operadores .in&rios aparecem entre os operandos A ordem das opera 2es so determinadas pela preced1ncia dos operadores ou pelos par1nteses KK(KK KK)KK Gota o prefi*a (nota o polonesa)# 6 7 6 H I A 7 J H

Gota o posfi*a (nota o polonesa reversa)# H I 6 A 7 J H 7 6

Go fa$ uso de par1nteses e no re,uer rela 2es de preced1ncia

Pilhas

Aplica 2es

Algoritmo para avalia o de e*press2es posfi*as

Os componentes da e*presso so processados da es,uerda para a direita como a seguir# Be o prL*imo componente da e*presso / um operando, o valor do componente / colocado na pilha Be o prL*imo componente da e*presso / um operador, ento os seus operandos esto na pilha. O n+mero re,uerido de operandos / retirado da pilha, a opera o espec"fica / reali$ada, e o resultado / arma$enado de volta na pilha. Ao final, a pilha conter& um +nico dado ,ue / o valor final da e*presso

Bimule a e*ecu o do algoritmo com a e*presso a seguir# HI6A7JH76

Estruturas de Dados

Filas

Filas

Lista FIFO (First In, First Out) Os elementos so colocados e retirados por ordem de chegada Inser o apenas no final da fila

!emo o apenas no in"cio da fila

Filas

(ma fila permite v&rias opera 2es 'riar uma fila va$ia

Inserir um novo item (no final) !emover um item (do in"cio) Esva$iar a fila Etc.

Filas

Implementa o de filas

(sando vetores

Pode)se implementar uma fila de tamanho fi*o usando vetores. Este tamanho determinar& o n+mero m&*imo de elementos ,ue podero estar na fila ao mesmo tempo - necess&rio dois inteiros para arma$enar o valor das posi 2es do vetor aonde se encontram o in"cio e o final da fila A implementa o de uma fila ,ue usa como estrutura .&sica uma lista ligada / mais simples, pois a lista no / uma estrutura de tamanho fi*o 0asicamente, os dados devem ser colocados (enfileirados) no final da lista e retirados (desenfileirados) do in"cio da lista.

(sando uma lista ligada

Filas

Aplica 2es

As filas so utili$adas ,uando dese4amos processar itens de acordo com a ordem de chegada (o primeiro a chegar ser& o primeiro a ser processado). Bistemas operacionais, por e*emplo, usam filas para regular a ordem em ,ue as tarefas devem rece.er processamento e recursos devem ser alocados a processos. Fila de prioridade (inser o ordenada) Outras aplica 2es

Boma de inteiros (super) longos Manipula o de uma se,u1ncia de caracteres

Filas

Aplica 2es

(tili$ada na implementa o de percurso em largura em &rvores (m percurso em largura percorre (visita) os nLs da &rvore segundo a ordem de seus n"veis (ma maneira de implementar um percurso em largura de uma &rvore / atrav/s do uso de uma fila#

Para come ar o percurso, o nL rai$ / posto na fila ApLs, repetir os seguintes passos at/ ,ue a fila este4a va$ia# !etire e visite (percorra) o primeiro nL da fila 'olo,ue, da es,uerda para a direita, seus filhos na fila

Filas
A Bimule o algoritmo para a seguinte arvore#

'

Pilhas e Filas

E*erc"cio

8ada uma lista de caracteres formada por uma se,O1ncia alternada de letras e d"gitos, construa um m/todo ,ue retorne uma lista na ,ual as letras so mantidas na se,O1ncia original e os d"gitos so colocados na ordem inversa E*emplo# A ? E H F P Q R ;SA R E P F H Q ? ; T ' I = D 3 JSJ ' D = I 3 T Buponha a e*ist1ncia de um m/todo eh8igito(ch caractere) ,ue retorna true caso o caractere se4a um digito e false caso contr&rio.

Estruturas de Dados

Deques

Deques

Double-ended queue E*tenso de filas ,ue permite inserir e remover dados em am.as as e*tremidades

Deques

(ma de,ue permite v&rias opera 2es 'riar uma de,ue

Inserir um novo item no in"cio Inserir um novo item no final !emover o item do in"cio !emover o item do final Esva$iar Etc.

Deques

A implementa o de de,ues tam./m poder ser por meio de vetores ou listas ligadas Ga implementa o atrav/s de listas ligadas, a utili$a o de uma lista duplamente encadeada torna a implementa o mais eficiente !emover o nL do final / mais eficiente em uma lista duplamente encadeada do ,ue em uma lista simplesmente encadeada

Você também pode gostar