Pilhas e Filas usando Alocação Estática e Dinâmica de Memória

Slides:



Advertisements
Apresentações semelhantes
Estruturas de Dados Listas Prof. Rodrigo Rocha
Advertisements

Estruturas de Dados FILA Prof. Rodrigo Rocha
Estruturas de Dados Pilha Prof. Rodrigo Rocha
Sistemas Especialistas
ESTRUTURA DE DADOS Professor: Marcelo Mendes Turma: MBI-1
Índice Estrutura de Dados Pilhas 2010 Renan Robson Lima Carneiro
Listas Encadeadas CONTEÚDO (1) Motivação (2) Definição (3) Operações
Pilhas e Filas CONTEÚDO (1) Pilhas (2) Filas.
Algoritmos de manipulação de estruturas elementares de dados
Programação II Estruturas de Dados
Programação II Estruturas de Dados
Análise Léxica (Parte 2)
Modelos de Mineração de Dados
Pesquisas de Dados (Parte 2)
Classificação de Dados
Estrutura de Dados e Algoritmos e Programação e Computadores II
ESTRUTURAS DO TIPO FILA
1 Tipos definidos O programador pode definir seus próprios tipos de dados tipos complexos usados da mesma forma que os simples declaram-se variáveis utilizando-se.
Filas David Menotti Estruturas de Dados I DECOM – UFOP.
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
Aplicações de Pilhas Pilhas são fundamentais em diversas áreas da computação: Sistemas Operacionais Arquitetura de Computadores Compiladores Entre outros.
Listas lineares Listas Lineares Fila Dupla Pilha Fila Saída restrita
AED – Algoritmos e Estruturas de Dados
Estrutura de dados Busca
Robson Godoi / Sandra Siebra
Lista Encadeada Circular Lista Duplamente Encadeada
Listas Encadeadas.
Prof. Hilton Cardoso Marins Junior
Prof.° Jean Daniel Henri Merlin Andreazza Estrutura de Dados
Listas Simplesmente Encadeadas
Aula prática 12 Listas Encadeadas
Listas Lineares Estrutura de Dados.
Algoritmos e Estruturas de Dados
Denise Guliato Faculdade de Computação – UFU
Listas lineares Denise Guliato Faculdade de Computação – UFU
Aula 11 LISTAS LIGADAS.
Estruturas de Dados com Jogos
Estruturas de Dados com Jogos
INTELIGÊNCIA ARTIFICIAL
Tipos Abstratos de Dados
Filas - Definição Uma fila possui o comportamento: O primeiro que chega é o primeiro que sai. O único elemento que pode ser removido da fila é o primeiro.
TAD Pilha com Alocação Dinâmica de Memória
Estrutura de dados II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Estrutura de dados II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação
Estruturas de Dados com Jogos
Denise Guliato Faculdade de Computação – UFU
Listas, Filas e Pilhas Katia Guimarães.
Aula 3 Listas, pilhas, filas.
Estruturas de Dados Aula 9: Listas (parte 1)
IA - Prof. Paulemir Campos
Estruturas de Dados PROFESSOR DIÓGENES FURLAN. Estruturas de Dados (ED) Programas operam sobre dados Dados são relacionados e possuem estrutura Como representar.
Estruturas de Dados Aula 11: TAD Pilha
Listas Simplesmente Encadeadas
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática
© 2011 Pearson Prentice Hall. Todos os direitos reservados.slide 1 © 2011 Pearson Prentice Hall. Todos os direitos reservados.slide 1 © 2011 Pearson Prentice.
INE5408 Estruturas de Dados
Objetivos Ao concluir esta Disciplina espera-se que os alunos sejam capazes de: Distinguir os conceitos de Estrutura e Dados; Compreender o que são, como.
Estruturas de Dados I Prof. Marcos Saúde
Estrutura de Dados Aula 3 - Listas
Profa. Juliana Mafra ESTRUTURA DE DADOS 30 de Setembro de 2009 Faculdade de Informática e Tecnologia de Pernambuco.
UNIVERSIDADE FEDERAL DO AMAZONAS- UFAM INSTITUTO DE CIÊNCIAS EXATAS E TECNOLOGIA- ICET SISTEMAS DE INFORMAÇÃO ALGORITMOS E ESTRUTURAS DE DADOS II PILHAS.
INE5408 Estruturas de Dados Listas Encadeadas Simples.
11 Pilhas, Filas e Listas Duplamente Encadeadas Prof. Kariston Pereira Adaptado de Material gentilmente fornecido pelo Prof. Rui Tramontin (DCC/UDESC)
USP – ICMC – SSC SSC0300 2º Semestre 2015 Disciplina de Linguagem de Programação e Aplicações [ Eng. Elétrica / Eletrônica ] 1 Prof. Dr. Daniel Rodrigo.
Pilha dinâmica Prof.° Jean Daniel Henri Merlin Andreazza
Estrutura de Dados Prof. André Cypriano M. Costa
Alocação Dinâmica Dilvan Moreira. Objetivos  Entender o que são e como usar:  Gerenciamento de Memória  Alocação Dinâmica em C.
INE5408 Estruturas de Dados Estruturas de Dados básicas utilizando Vetores - Introdução - Pilhas usando Vetores - Filas usando Vetores.
Transcrição da apresentação:

Pilhas e Filas usando Alocação Estática e Dinâmica de Memória UPE – Caruaru – Sistemas de Informação Disciplina: Estrutura de Dados e Arquivo Prof.: Paulemir G. Campos Pilhas e Filas usando Alocação Estática e Dinâmica de Memória 4/11/2017 EDA - Prof. Paulemir Campos

EDA - Prof. Paulemir Campos Pilhas: Introdução Definição É uma estrutura de dados de tamanho variável, sendo que elementos são incluídos (empilhados) e/ou removidos (desempilhados) apenas pela extremidade topo. 15 12 99 54 102 77 Topo Base 4/11/2017 EDA - Prof. Paulemir Campos

EDA - Prof. Paulemir Campos Pilhas: Introdução Note que uma pilha é uma estrutura de dados do tipo FILO (First In Last Out). Isto porquê o primeiro elemento empilhado é sempre o último a ser desempilhado. 4/11/2017 EDA - Prof. Paulemir Campos

EDA - Prof. Paulemir Campos Pilhas: Introdução Operações Básicas: Teste de pilha vazia; Criação da pilha; Empilhamento; Desempilhamento; Acesso aos elementos da pilha. 4/11/2017 EDA - Prof. Paulemir Campos

EDA - Prof. Paulemir Campos Pilhas: Introdução Do ponto de vista da alocação de memória para esse tipo de estrutura de dados, podem ser implementadas usando: Alocação Estática: Em geral através de arranjo ou vetor; Alocação Dinâmica: Utilizando ponteiro. Normalmente com lista simplesmente encadeada. 4/11/2017 EDA - Prof. Paulemir Campos

EDA - Prof. Paulemir Campos Pilhas: Alocação Estática Características: Teste de Pilha Vazia: Tamanho do Vetor é zero; Cria-se um vetor de tamanho suficientemente grande para a finalidade de uso; Quando um elemento é empilhado o índice do topo é acrescido em 1; Quando um elemento é desempilhado (se possível) o índice do topo é decrescido em 1. 4/11/2017 EDA - Prof. Paulemir Campos

EDA - Prof. Paulemir Campos Pilhas: Alocação Estática Características: Geralmente há uma variável do tipo inteiro chamada topo, para armazenar o índice do vetor correspondente ao topo da pilha; Caso o vetor comece em 1, uma pilha vazia teria topo=0. Neste caso, uma pilha estaria vazia se topo=0. O acesso ao elementos é feito pelo topo, bem como empilhamentos e desempilhamentos. 4/11/2017 EDA - Prof. Paulemir Campos

EDA - Prof. Paulemir Campos Pilhas: Alocação Dinâmica Considere a definição do tipo tPilhaSimples abaixo: defina estrutura no { caracter dado ponteiro estrutura no proximo } tPilhaSimples 4/11/2017 EDA - Prof. Paulemir Campos

EDA - Prof. Paulemir Campos Pilhas: Alocação Dinâmica Criando uma pilha unitária: ponteiro tPilhaSimples func CriaPilha(caracter novo){ ponteiro tPilhaSimples topo topo = aloque(tPilhaSimples) topo->dado = novo topo->proximo = NULL retorne topo } 4/11/2017 EDA - Prof. Paulemir Campos

EDA - Prof. Paulemir Campos Pilhas: Alocação Dinâmica Teste de pilha vazia: booleano func PilhaVazia(ponteiro tPilhaSimples topo){ se (topo == NULL) retorne TRUE senao retorne FALSE } 4/11/2017 EDA - Prof. Paulemir Campos

EDA - Prof. Paulemir Campos Pilhas: Alocação Dinâmica Empilhando um elemento: ponteiro tPilhaSimples func Empilha (ponteiro tPilhaSimples topo; caracter novo) { ponteiro tPilhaSimples novoTopo novoTopo = aloque(tPilhaSimples) se (novoTopo == NULL) retorne topo /* Erro durante a alocação dinâmica de memória */ novoTopo->dado = novo novoTopo->proximo = topo retorne novoTopo } 4/11/2017 EDA - Prof. Paulemir Campos

EDA - Prof. Paulemir Campos Pilhas: Alocação Dinâmica Desempilhando um elemento: ponteiro tPilhaSimples func Desempilha (ponteiro tPilhaSimples topo) { ponteiro tPilhaSimples novoTopo se (Topo == NULL) retorne topo /* Pilha vazia */ novoTopo = topo->proximo desaloque(topo) retorne novoTopo } 4/11/2017 EDA - Prof. Paulemir Campos

EDA - Prof. Paulemir Campos Pilhas: Alocação Dinâmica Acessando elementos da pilha Como estamos usando uma lista simplesmente encadeada podemos acessar todos os elementos da pilha, apartir do topo, fazendo pequenos ajustes na função de acesso aos elementos de uma lista simples para uso com o tipo pilha, sem ter a necessidade de desempilhá-los. 4/11/2017 EDA - Prof. Paulemir Campos

EDA - Prof. Paulemir Campos Filas: Introdução Definição É uma estrutura de dados de tamanho variável, sendo que elementos são incluídos (enfileirados) pelo fim da fila e removidos (desenfileirados) pelo início da fila. 15 12 19 51 7 213 54 99 88 INÍCIO FIM 4/11/2017 EDA - Prof. Paulemir Campos

EDA - Prof. Paulemir Campos Filas: Introdução Note que uma fila é uma estrutura de dados do tipo FIFO (First In First Out). Isto porquê o primeiro elemento enfileirado é sempre o primeiro a ser desenfileirado. 4/11/2017 EDA - Prof. Paulemir Campos

EDA - Prof. Paulemir Campos Filas: Introdução Operações Básicas: Teste de fila vazia; Criação da fila; Enfileiramento; Desenfileiramento; Acesso aos elementos da fila. 4/11/2017 EDA - Prof. Paulemir Campos

EDA - Prof. Paulemir Campos Filas: Introdução Do ponto de vista da alocação de memória para esse tipo de estrutura de dados, podem ser implementadas usando: Alocação Estática: Em geral através de arranjo ou vetor; Alocação Dinâmica: Utilizando ponteiro. Normalmente com lista simplesmente encadeada. 4/11/2017 EDA - Prof. Paulemir Campos

EDA - Prof. Paulemir Campos Filas: Alocação Estática Características: Teste de Fila Vazia: Índice fim menor que inicio; Cria-se um vetor de tamanho suficientemente grande para a finalidade de uso; Quando um elemento é enfileirado o valor do fim é igual ao tamanho do vetor; Quando um elemento é desenfileirado (se possível) o valor do inicio é acrescido em 1. 4/11/2017 EDA - Prof. Paulemir Campos

EDA - Prof. Paulemir Campos Filas: Alocação Estática Características: Note que, desta forma, posições vão se perdendo na fila estática. Um solução, é deslocar o conteúdo do vetor em uma posição no sentido do índice inicial do vetor. Assim, como o início será sempre um mesmo valor, há apenas a necessidade da variável fim. 4/11/2017 EDA - Prof. Paulemir Campos

EDA - Prof. Paulemir Campos Filas: Alocação Dinâmica Considere a definição do tipo tFilaSimples abaixo: defina estrutura no { caracter dado ponteiro estrutura no proximo } tFilaSimples 4/11/2017 EDA - Prof. Paulemir Campos

EDA - Prof. Paulemir Campos Filas: Alocação Dinâmica Criando uma fila unitária: ponteiro tFilaSimples func CriaFila(caracter novo){ ponteiro tFilaSimples inicio inicio = aloque(tFilaSimples) inicio->dado = novo inicio->proximo = NULL retorne inicio } 4/11/2017 EDA - Prof. Paulemir Campos

EDA - Prof. Paulemir Campos Filas: Alocação Dinâmica Teste de fila vazia: booleano func FilaVazia(ponteiro tFilaSimples inicio){ se (inicio == NULL) retorne TRUE senao retorne FALSE } 4/11/2017 EDA - Prof. Paulemir Campos

EDA - Prof. Paulemir Campos Filas: Alocação Dinâmica Enfileirando um elemento: ponteiro tFilaSimples func Enfileira (ponteiro tFilaSimples inicio; caracter elemento) { ponteiro tFilaSimples temp, novo temp = cabeca /* Considere que inicio não é um ponteiro nulo */ /* Percorre a fila até encontrar o último elemento */ enquanto (temp->proximo != NULL) temp = temp->proximo /* Enfileira o novo elemento no fim da fila */ novo = aloque(tFilaSimples) novo->dado = Elemento novo->proximo = temp->proximo temp->proximo = novo retorne inicio } 4/11/2017 EDA - Prof. Paulemir Campos

EDA - Prof. Paulemir Campos Filas: Alocação Dinâmica Desenfileirando um elemento: ponteiro tFilaSimples func Desenfileira (ponteiro tFilaSimples inicio) { ponteiro tFilaSimples novoInicio se (inicio == NULL) retorne inicio /* Fila vazia */ novoInicio = inicio->proximo desaloque(inicio) retorne novoInicio } 4/11/2017 EDA - Prof. Paulemir Campos

EDA - Prof. Paulemir Campos Filas: Alocação Dinâmica Acessando elementos da fila Como estamos usando uma lista simplesmente encadeada podemos acessar todos os elementos da fila, apartir do inicio, fazendo pequenos ajustes na função de acesso aos elementos de uma lista simplesmente encadeada para usar com o tipo fila. 4/11/2017 EDA - Prof. Paulemir Campos

EDA - Prof. Paulemir Campos Referências Szwarcfiter, J. L.; Markenzon, L. Estruturas de Dados e seus Algoritmos. Rio de Janeiro: LTC, 2a. ed., 1994. Veloso, P. et al. Estrutura de Dados. Rio de Janeiro: Editora Campus, 1996. 4/11/2017 EDA - Prof. Paulemir Campos