Listas Duplamente Encadeadas



Documentos relacionados
ESTRUTURA DE DADOS (TCC )

ESTRUTURA DE DADOS PILHA

FUNDAÇÃO EDUCACIONAL DE ITUIUTABA

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

Estruturas de Dados Pilhas, Filas e Deques

EAD Árvore árvore binária

PROGRAMAÇÃO II 3. PILHA DINÂMICA

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

Estrutura de Dados Pilha (Stack)

DAS5102 Fundamentos da Estrutura da Informação

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

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

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

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

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

2ª Lista de Exercícios

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

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

Estrutura de Dados Básica

Universidade Estadual de Mato Grosso do Sul - Curso de Ciência da Computação Disciplina: Estruturas de Dados Profª. Raquel Marcia Müller

Busca. Pesquisa sequencial

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

Algoritmos e Estrutura de Dados II

Pilhas Filas e Listas

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

Estruturas de Dados. Listas Dinâmicas Duplamente Encadeadas & Variantes. Listas Duplamente Encadeadas

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

Complexidade de Algoritmos

INF PROGRAMAÇÃO II LISTA DE EXERCÍCIOS 15

Curso : Tecnologia em Desenvolvimento de Sistemas - AEMS

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

Pesquisa em Memória Primária. Algoritmos e Estruturas de Dados II

INF1007: Programação 2 10 Árvores Binárias. (c) Dept. Informática - PUC-Rio 1

TCC Prof.: Leandro A. F. Fernandes Conteúdo: Listas Lineares

ALGORITMOS E ESTRUTURAS DE DADOS CES-11 CES-11 CES-11

Árvore Binária de Busca

Pilhas. Profa Morganna Diniz

INF 1007 Programação II

EAD Árvore - representação usando listas ligadas

Aula 3 Alocação Dinâmica

Filas: conceitos e implementações

Métodos Computacionais. Fila

Estruturas de Dados. Prof. Gustavo Willam Pereira Créditos: Profa. Juliana Pinheiro Campos

Estruturas de Dados I

Árvores Binárias de Busca

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

ALGORITMOS E ESTRUTURAS DE DADOS Terceiro Trabalho Prático Recursividade e Pilhas

Linguagem C: Árvores Binarias

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

Algoritmos e Estrutura de Dados. Aula 05 Estrutura de Dados: Listas Prof. Tiago A. E. Ferreira

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

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

Árvores Binárias de Busca

Estruturas de Dados. Parte dos slides a seguir são adaptações, extensões e traduções para C dos originais:

ESTRUTURA DE DADOS DCC013

Trabalho 3: Agenda de Tarefas

PROGRAMAÇÃO II 3. FILA DINÂMICA

Pesquisa Sequencial e Binária

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

1. Introdução Definição Conceitos relacionados... 2

Tipos de Dado Abstrato: Listas, Filas e Pilhas

Prof. Yandre Maldonado - 1 PONTEIROS. Prof. Yandre Maldonado e Gomes da Costa

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

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

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

Estruturas de Dados com Jogos. Capítulo 7 Generalização de Listas Encadeadas

REVISÃO DE PILHAS E FILAS. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

Orientação a Objetos

Estruturas de Dados Aula 15: Árvores 17/05/2011

Na resolução de um problema por meio de um programa, a primeira providência é conceber um algoritmo adequado.

Tipo de Dados Abstractos: Pilha (stack)

Listas Lineares. continuando...

Busca em Memória. Secundária

10. Listas Encadeadas

Estruturas de Dados. Módulo 11 Pilhas. 9/8/2005 (c) Dept. Informática - PUC-Rio 1

Figura 13.1: Um exemplo de árvore de diretório.

Templates e Pilhas. 1. Introdução

Estrutura de Dados: Aula 3 - Linguagem C

Listas (Parte 2) Túlio Toffolo BCC202 Aula 10 Algoritmos e Estruturas de Dados I

Estruturas de Dados Árvores

Introdução a POO. Introdução a Linguagem C++ e POO

Árvores binárias de pesquisa com balanceamento. Algoritmos e Estruturas de Dados II

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

Conceitos. Pilhas e Filas. Conceitos e Implementação em linguagem C. Maria Adriana Vidigal de Lima. Março

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

Linguagem de Montagem

Sumário. 5COP096 Teoria da Computação Aula 8 Pesquisa em Memória Primária

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DA PARAÍBA COORDENAÇÃO DO CURSO DE TECNOLOGIA EM TELEMÁTICA APOSTILA DE

UFRJ IM - DCC. Sistemas Operacionais I. Unidade IV Sistema de arquivos. Prof. Valeria M. Bastos Prof. Antonio Carlos Gay Thomé 13/06/2012 1

Prof. Jesus José de Oliveira Neto

Filas Exemplo de Aplicação

Árvores B + Prof Márcio Bueno. ed2tarde@marciobueno.com / ed2noite@marciobueno.com. Material da Prof a Ana Eliza Lopes Moura

Tópicos Avançados em Estrutura de Dados 6º Período Ciência da Computação Prof. Jean Carlos Hennrichs. Revisão. 2. Lista Estática Duplamente Encadeada

INF1007 Programação 2 9 Pilhas. (c) Dept. Informática - PUC-Rio 1

Avaliação de Expressões

Transcrição:

Listas Duplamente Encadeadas! quando for preciso seguir a seqüência de elementos em ambos os sentidos! cada nó possui dois ponteiros: ant e prox ant prox a b c d Início Fim 1

Listas Duplamente Encadeadas - Operações! um conjunto maior de ligações a serem atualizadas! necessário especificar mais um ponteiro ant no algoritmo?! Especificar o algoritmo de! inserção! remoção 2

Listas Circulares! tanto para simplesmente quanto duplamente encadeadas! útil quando! quando se busca a partir de qualquer elemento! não há ordenação na lista! um ponteiro para algum elemento deve estar sempre definido 3

Estruturas de Acesso Restrito! Para muitas aplicações é necessário impor restrições de acesso aos dados! essas restrições podem vir a ser benéficas por:! aliviar a necessidade de usar estruturas com mais detalhes! permitem implementações mais simples e flexíveis, desde que menos operações são suportadas! pilhas - LIFO: last in first out! filas - FIFO: first in first out 4

Pilhas! Apenas duas operácões básicas estão envolvidas:! PUSH ou Empilha: Acrescentar no topo da pilha! POP ou Desempilha: Retirar do topo da pilha 3o. elem. 2o. elem. 1o. elem. 4o. elem. 3o. elem. 2o. elem. 1o. elem. 3o. elem. 2o. elem. 1o. elem.

Pilhas! A política de inserção e remoção à maneira de uma pilha é também conheciada como LIFO: Last In, First Out 6

Pilhas em Lista Sequenciais! PILHA - lista sequencial que implementa pilha! o elemento 0 será definido como o fundo da pilha! topo da pilha: TOPO é o índice que indica a 1a. posição livre da pilha P! pilha vazia: TOPO = 0! restrição: tamanho máximo 4 4o. elem. 3o. elem. 2o. elem. 1o. elem. 7

Pilhas - Lista Sequenciais iniciapilha(){ Topo = 0 /* Pilha vazia */ } ( x ) empilha if(topo < MAX) { /* Possui espaço */ PILHA[topo] = x; Topo ++; return(true); } else return(false); /* estouro da pilha */ 8

Pilhas - Lista Sequenciais #define VAZIA 9999999 desempilha (){ if(topo!= 0) { /* Possui elemento na pilha */ Topo - -; return(pilha[topo]); } else return(vazia); /* pilha vazia */ } 9

Pilhas - Lista Sequenciais " consultar o tamanho atual da pilha altura (PILHA) { return (Topo-1); } " consultar o topo da pilha topo (PILHA) { return(pilha[topo-1]); } 10

Complexidade das Operações em Pilha em Lista Sequenciais ( O(1! Todas as operações são! Se for necessário tratar overflow com realocação, inserção pode ter complexidade de ( O(n pior caso! Uma nova lista de comprimento maior seria alocada! Todos os elementos são copiados para a nova lista 11

Pilhas em lista encadeada! Topo agora é um ponteiro para o topo da pilha! Pilha vazia: Topo= NULL! não possui restrição de tamanho máximo 12

Pilhas - lista encadeada! empilha! desempilha novo elemento 13

Pilhas - lista encadeada () inic_pilha { Topo = NULL; } ( valor ) empilha {?? } 14

Pilhas - lista encadeada () desempilha { t = Topo; if (t == NULL) /* pilha vazia */ ( vazia return( else { } } 15

Pilhas - exercício! um algoritmo que converta uma expressão aritmética da forma parentizada para pós-fixa! Forma parentizada: (* 5 (( 9+8 ) * ( 6*4 ) +) 7 (! Forma pós-fixa: 5 9 8 + 4 6 * * 7 + * 16

Filas! Seja F uma fila, e v um valor:! enfila (v): v é inserido no final da fila F! desenfila(): descarta o elemento mais antigo da fila F, ou seja, o elemento que está no início de F! comprimento(f): retorna o número de elementos na fila F! A política de inserção e remoção de dados à maneira de uma fila é conhecida como FIFO First In First Out 17

Filas " enfila: respeitar o tamanho máximo da lista " desenfila: pode esvaziar a fila 1o. elem. 2o. elem. 3o. elem. 4o. elem. 5o. elem. 6o. elem. 18 1o. elem. 2o. elem. 3o. elem. 4o. elem. 5o. elem. 6o. elem.

Filas 1o. elem. enfila 3o enfila 4o desenfila 2o. elem. 3o. elem. 4o. elem. 5o. elem. 6o. elem. desenfila enfila 5o 1o. elem. 2o. elem. 3o. elem. 4o. elem. 5o. elem. 6o. elem. 19

Filas 1o. elem. 2o. elem. 3o. elem. 4o. elem. 5o. elem. 6o. elem. enfila 6o 20

Filas ( enfila(v { if (mod(fim+1, MAX)!= Início ){ F[Fim]=v; Fim = mod(fim+1, MAX); }else overflow ; } desenfila(){ if( Início!= -1){ valor=f[início]; Início=mod(Início +1,MAX); ( Fim if (Inicio == Inicio = Fim = -1; } else underflow ; } 21

Filas lista encadeada

Filas lista encadeada Inicialização : " inicio = NULL; fim = NULL;! Após a inserção do 1o. elemento 23

Filas lista encadeada inserção enfila_enc (v){ } 24

Filas lista encadeada desenfila_enc(){ } 25

Filas e Pilhas Múltiplas! Alocar mais de um pilha ou fila em uma mesma região de memória! implementação por listas sequenciais! Duas pilhas! simples : uma cresce de cada lado da lista! Mais de duas pilhas! dividir a área em tamanhos proporcionais aos tamanhos máximos das pilhas ou, se não souber, em pedaços iguais. 26

Filas E Pilhas Múltiplas Área de Memória 27

Filas E Pilhas Múltiplas! Especificar os algoritmos de inserção e remoção em pilha, considerando duas pilhas armazenadas em lista sequencial que compartilham a memória de dimensão M 28