Estrutura de Dados Pilha (Stack)



Documentos relacionados
PROGRAMAÇÃO II 3. FILA DINÂMICA

PROGRAMAÇÃO II 3. PILHA DINÂMICA

FUNDAÇÃO EDUCACIONAL DE ITUIUTABA

7. ESTRUTURAS DE DADOS ESTÁTICAS E DINÂMICAS

ESTRUTURA DE DADOS PILHA

EAD Fila. - algumas operações realizam-se na frente/cabeça e outras na cauda da Fila

Estrutura de Dados. Introdução a Ponteiros. Prof. Gerson Borges Estrutura de Dados I 1

Listas Duplamente Encadeadas

Estrutura de Dados Polinómio

Estruturas de Dados Pilhas, Filas e Deques

- UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação

Filas. A ordem de saída corresponde diretamente à ordem de entrada dos elementos. Fila de caixa bancário

- UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação

PROGRAMAÇÃO II 4. ÁRVORE

Pilhas Filas e Listas

- UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação

CES-11. Algoritmos e Estruturas de Dados. Carlos Alberto Alonso Sanches Juliana de Melo Bezerra

ESTRUTURAS DE DADOS I. Notas de Aula. Prof. Dr. Gilberto Nakamiti

Tipos de Dado Abstrato: Listas, Filas e Pilhas

Pilhas e Filas. Prof. Walteno Martins Parreira Júnior.

Estruturas de Dados com Jogos. Capítulo 3 Filas - Alocação Sequencial e Estática

Complexidade de Algoritmos

Exemplos. Alocação Dinâmica de Pilhas. Pilhas. Pilhas. Implementação Seqüencial X Encadeada. SCE 182 Algoritmos e Estruturas de Dados I

Pilhas. Fabrício J. Barth. BandTec - Faculdade de Tecnologia Bandeirantes

Conjunto (set) O tipo estruturado set representa, em Pascal, um conjunto de objectos de um dado tipo;

FACULDADE CAMPO LIMPO PAULISTA MESTRADO EM CIÊNCIA DA COMPUTAÇÃO. Projeto e Análise de Algoritmos II Lista de Exercícios 2

Algoritmos e Estrutura de Dados. Prof. Tiago A. E. Ferreira

Estruturas de Dados Aula 11: TAD Pilha 09/05/2011

DAS5102 Fundamentos da Estrutura da Informação

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 6 Filas

Curso : Tecnologia em Desenvolvimento de Sistemas - AEMS

Algoritmos e Estrutura de Dados II

Variáveis Compostas Heterogêneas. Variável Composta Heterogênea. Variável Composta Heterogênea

Pedro Vasconcelos DCC/FCUP. Programação Funcional 14 a Aula Tipos abstratos de dados

Pilhas. Profa Morganna Diniz

Sumário. Armazenamento de dados. Tipos de dados dinâmicos. Exemplos. Vectores Vectores dinâmicos Dados dinamicos. Declaração Uso 10-1

/*(Atenção: Em se tratando de uma lista estaticamente alocada, temos utilizado a estratégia de passa o tamanho máximo do vetor.)*/

Tipo de Dados Abstractos: Pilha (stack)

Árvores Binárias de Pesquisa (ABP) INF01203 Estruturas de Dados. Operações. Árvores Binárias de Pesquisa (ABP) Caminhamento Central à Esquerda

EAD Árvore árvore binária

-Estrutura linear de acesso seqüencial que ordena seus elementos pela seqüência cronológica de sua entrada;

Listas Lineares. Fundamentos

Manipulação de Arquivos em Pascal

BUSCA EM LISTAS LISTAS SEQÜENCIAIS, LISTAS SIMPLESMENTE E DUPLAMENTE ENCADEADAS E LISTAS CIRCULARES

Programas operam sobre dados. Dados são relacionados e possuem estrutura. Como representar e manipular dados em um computador

Estrutura de Dados. Carlos Eduardo Batista. Centro de Informática - UFPB

Métodos Computacionais. Fila

SCC 202 Algoritmos e Estruturas de Dados I. Pilhas (Stacks) (implementação dinâmica)

IFTO TÉCNICO EM INFORMÁTICA DESENVOLVIMENTO DE SISTEMAS AULA 01

Filas. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Aula 3 Alocação Dinâmica

A Pilha. Aula 02. DPEE 1038 Estrutura de Dados para Automação Curso de Engenharia de Controle e Automação Universidade Federal de Santa Maria

Números positivos ordenados

Pesquisa em Memória Primária. Prof. Jonas Potros

- UNIVERSIDADE DO VALE DO RIO DOS SINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS (C6/6) Curso: Informática

FACULDADE DE TECNOLOGIA SENAC GOIÁS ADELTON HENRIQUE ABISHAI LEMES BORGES NETO HENRIQUE FERREIRA DA SILVA

CES-11. Pilhas Definição Operações Filas. Operações Deques. Definição. Operações

Pilhas Acesso. Pilha. Fila. Listas lineares especiais. Pilhas e Filas. Listas lineares especiais mais usuais. Disciplina restrita

3.4 Representação física: alocação encadeada (dinâmica) Ptlista - variável ponteiro externa que indica o início da lista.

Árvores AVL. Prof. Othon M. N. Batista Estrutura de Dados

PL/SQL. Profa. Dra. Cristina Dutra de Aguiar Ciferri. Laboratório de Bases de Dados PL/SQL

Analisando e comparando as funções do DBNavegator

Filas: conceitos e implementações

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas

2ª Lista de Exercícios

Algumas notas sobre PASCAL

Trabalho 3: Agenda de Tarefas

Árvore Binária de Busca

EAD PILHA - DEFINIÇÃO

SQL Procedural. Josino Rodrigues Neto

struct LISTA item quant

Algoritmos e Estruturas de Dados: Árvore Binária

IES-300. Tecnologia em Análise e Desenvolvimento de Sistemas Prof. Me. Álvaro d Arce alvaro@darce.com.br

Desafios de Programação TCC Turma A-1

Árvores Binárias de Busca

Avaliação de Expressões

Guia de Consulta Rápida C++ STL. Joel Saade. Novatec Editora

Filas com prioridade - Introdução (1)

Árvores Binárias de Busca

Universidade Federal de Uberlândia Faculdade de Computação

A memória é um recurso fundamental e de extrema importância para a operação de qualquer Sistema Computacional; A memória trata-se de uma grande

ARQUIVOS. Os arquivos criados em meios magnéticos poderão ser acessados para leitura e escrita na forma seqüencial, direta ou indexada.

Sintaxe do Pascal Simplificado Estendido de 12 novas construções em Notação EBNF (BNF estendida)

Transcrição:

Estrutura de Dados Pilha (Stack) Estrutura de Dados que corresponde a uma lista sequencial com a propriedade seguinte: LIFO O primeiro elemento a entrar é o último a sair ( Last in First Out ) Operações básicas: criar uma pilha vazia; sobreposição de um novo elemento; retirar o elemento do topo da pilha verificar qual é o elemento no topo da pilha verificar se a pilha está vazia Representação dinâmica: type TipoValor =... ; Pilha = ˆ Elemento; Elemento = record valor : TipoValor; ant : Pilha; MP II, 2006/2007 p.16/??

Operadores sobre Pilha function criar : cria uma pilha vazia Pilha; function vazia(p:pilha) : boolean; devolve verdade sse a pilha P estiver vazia procedure sobrepor(var P : Pilha; x : coloca um novo elemento com x no topo da pilha P TipoValor) procedure remover(var P : Pilha) remove o elemento da cabeça da pilha P; dá erro se vazia function topo(p:pilha) : TipoValor; Se a pilha P não estiver vazia, devolve o valor no elemento do topo de P ; dá erro se vazia MP II, 2006/2007 p.17/??

Estrutura de Dados Fila (Queue) Estrutura de Dados que corresponde a uma lista sequencial com a propriedade seguinte: FIFO O primeiro elemento a entrar é o primeiro a sair ( First in First Out ) Operações básicas: criar uma fila vazia; inserção de um novo elemento no fim; retirar o elemento da frente da fila verificar qual é o elemento na frente da pilha verificar se a fila está vazia Representação dinâmica: type TipoValor =... ; Fila = ˆ Elemento; Elemento = record valor : TipoValor; ant : Fila; MP II, 2006/2007 p.18/??

Operadores sobre Fila function criar : cria uma fila vazia Fila; function vazia(f:fila) : boolean; devolve verdade sse a fila F estiver vazia procedure por(var F : Fila; x : TipoValor) coloca um novo elemento com x no fim da fila F procedure remover(var F : Fila) remove o elemento da cabeça da fila F; dá erro se vazia function frente(p:pilha) : TipoValor; Se a fila F tiver elementos, devolve o valor no elemento da cabeça de F; dá erro se vazia MP II, 2006/2007 p.19/??

Filas e Pilhas como Estruturas Dinâmicas Uma Pilha deve ser implementada como Lista Ligada Simples Uma Fila deve ser implementada como Lista Ligada com Elemento Base MP II, 2006/2007 p.20/??

Pilha (Stack) Estrutura LIFO type TipoValor =... ; Lista = ˆ Elemento; Elemento = record valor : TipoValor; Pilha = Lista; ant : Lista; {* Cria uma pilha vazia *} function criarp : Pilha; criarp := nil {* devolve TRUE sse pilha vazia *} function vaziap(p : Pilha): boolean; if P == nil then vaziap := true else vaziap := false MP II, 2006/2007 p.21/??

Implementação da operações para Pilha {* cria novo elemento Elemento, inicializa e devolve apontador *} function cria_elem(val : TipoValor) : Lista; var aux : Lista; new(aux); with auxˆ do valor := val; prox := nil; cria_elem := aux; {* cria e coloca novo elemento no topo de p = INSERE NA CABECA *}... MP II, 2006/2007 p.22/??

Implementação da operações para Pilha continuação {* remove elemento do topo de P = REMOVE A CABECA *} Procedure remover(var P : Pilha) var aux : Pilha; if not vaziap(p) then aux := P; P := Pˆ.prox ; dispose(aux); end else writeln( **** ERRO: Tentativa de remover de pilha vazia ); MP II, 2006/2007 p.23/??

Continuação da continuação {* devolve o valor do elemento no topo de p *} procedure topo(p Pilha; var val : TipoValor); if not vaziap(p) then val := pˆ.valor; else writeln( **** ERRO: Tentativa de consultar pilha vazia ) val := valor_vazio; end MP II, 2006/2007 p.24/??

FILA (Queue) Estrutura FIFO TipoValor =... ; Lista = ˆ Elemento; Elemento = record valor : TipoValor; ant : Lista; Fila = ˆrecord inicio : Lista; fim : Lista; {* Cria uma fila vazia *} function criarf : Fila; var aux : Fila; new(aux); with auxˆ do inicio := nil; fim := nil; criarf := aux; MP II, 2006/2007 p.25/??

Implementação da operações para FILA {* devolve TRUE sse fila vazia *} function vaziap(f : Fila): boolean; if Fˆ.inicio == nil then vaziaf := true else vaziaf := false {* INSERE NO FIM COM PONTEIRO AUXILIAR *} Procedure por(val : TipoValor; var F : Fila) var novo : Lista; novo := cria_elem(val); if vaziaf(f) then Fˆ.inicio := novo; else Fˆ.fimˆ.prox := novo; Fˆ.fim := novo; MP II, 2006/2007 p.26/??

Implementação da operações para FILA continuação {* remove elemento da frente de F = REMOVE A CABECA *} Procedure remover(var F : Fila) var aux : Lista; if not vaziaf(f) then aux := Fˆ.inicio; F := auxˆ.prox; dispose(aux); if vaziaf(f) then Fˆ.fim := nil; { se este era o ultimo elemento } end else writeln( **** ERRO: Tentativa de remover de fila vazia ); MP II, 2006/2007 p.27/??

Continuação da continuação {* devolve o valor do elemento no topo de p *} procedure topo(f : Fila; var val : TipoValor); if not vaziaf(f) then val := Fˆ.inicioˆ.valor; else writeln( **** ERRO: Tentativa de consultar Fila vazia ); val := valor_vazio; end MP II, 2006/2007 p.28/??