Motivação para listas duplamente encadeadas e circulares

Slides:



Advertisements
Apresentações semelhantes
IFTO ESTRUTURA DE DADOS AULA 05 Prof. Manoel Campos da Silva Filho
Advertisements

Operações envolvendo imagens
Celso C. Ribeiro Caroline T. Rocha
Listas Encadeadas CONTEÚDO (1) Motivação (2) Definição (3) Operações
Múltiplos Os múltiplos de um número inteiro obtêm-se multiplicando esse número por 0, 1, 2, 3, 4, 5, 6, ... Exemplos: M5= {0, 5, 10, 15, 20,
Vetores Representação e características Operações I Decomposição
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Exatas e Naturais Ciência da Computação Aula.
TADS – Tipos Abstratos de Dados
Série de Exercícios.
1 Complexidade de Algoritmos Complexidade de pior caso Complexidade de melhor caso de uso bem menos freqüente em algumas situações específicas Complexidade.
Árvores.
Arquivos Seqüenciais Inhaúma Neves Ferraz
DIAGRAMA DE ATIVIDADES
Arquivos Extensíveis.
Exemplo de Espalhamento Extensível 1. Definição dos dados a processar 2 Escondido pela moldura.
Estruturas de Dados e Algoritmos
Listas Ligadas – Conceitos Avançados
Administração para Engenharia
1 Sabendo-se que os pratos das balanças estão em equilíbrio, você seria capaz de dizer: Quantos quadrados corresponde um círculo ? Dica Mais dicas Elaboração:
AED – Algoritmos e Estruturas de Dados
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Estruturas de Controle
Auditoria de Segurança da Informação
1 Aula 7 ImplementandoSubprogramas Universidade do Vale do Rio dos Sinos
Lista Encadeada Circular Lista Duplamente Encadeada
Fraction Action FRACÇÕES.
Listas Encadeadas.
Classes e objetos P. O. O. Prof. Grace.
Apontadores ou Ponteiros
Indexação de Arquivos Página de rosto.
Módulo Financeiro Centro de Custo.
Como aplicar leis da lógica
© 2011 Pearson Prentice Hall. Todos os direitos reservados.slide 1 © 2011 Pearson Prentice Hall. Todos os direitos reservados.slide 1 © 2011 Pearson Prentice.
Estrutura de Dados Unidade 9 Simulação do exercício 9.2 CASO 02a Roberto Ferrari Mauricio Falvo.
1 Celulose.
Arquitetura de Sistemas Operacionais – Machado/Maia 10/1 Arquitetura de Sistemas Operacionais Francis Berenger Machado Luiz Paulo Maia Capítulo 10 Gerência.
Cinemática Plana de um Corpo Rígido Cap. 16
MECÂNICA - DINÂMICA Cinemática de uma Partícula Cap Exercícios.
Árvores binárias de pesquisa com balanceamento
1 António Arnaut Duarte. 2 Sumário: primeiros passos;primeiros passos formatar fundo;formatar fundo configurar apresentação;configurar apresentação animação.
Conversão de um NFA para um DFA com um exemplo
Estruturas de Dados com Jogos
Estruturas de Dados com Jogos
Estruturas de Dados com Jogos
Estrutura de Dados Unidade 9 Simulação do exercício 9.2 CASO 02b Roberto Ferrari Mauricio Falvo.
Estrutura de Dados Unidade 9 Simulação do exercício 9.2 CASO 04b Roberto Ferrari Mauricio Falvo.
Salas de Matemática.
MINISTÉRIO DO PLANEJAMENTO Projeto de Lei Orçamentária 2010 Ministro Paulo Bernardo Silva Brasília, 31 de agosto de 2009.
Principais operações em Listas TPA Listas Simples Inserção no Final 1.void insereNofinalDaLista(Lista *l, Elemento e){ 2.Lista paux,p; 3. p.
Lista Encadeada Circular Lista Duplamente Encadeada
Estruturas de Dados com Jogos
EXERCÍCIOS PARA GUARDA-REDES
Rotação Simples e Dupla Katia Guimarães
1 2 Observa ilustração. Cria um texto. Observa ilustração.
Grupo A – Azul Claro, Marrom, Laranja
Preleções Científicas Universidade Estadual do Ceará Pró-Reitoria de Extensão Integrais Múltiplas e Integrais de Volume Ministrante: Prof. K. David Sabóia.
CALENDÁRIO SEXY Ele & Ela. CALENDÁRIO SEXY Ele & Ela.
Regiões de Saúde Resolução Normativa – RN nº 259, de 17 de junho de 2011, e suas alterações.
Ceça Moraes – Introdução à Programação SI1
Diagramas de Venn e de Carroll Não se chamam propriamente ferramentas/instrumentos estatísticos mas ajudam a organizar de uma forma simples alguns tipos.
Rio Verde - Goiás - Brasil
Cinemática Plana de um Corpo Rígido Cap. 16
Listas Simplesmente Encadeadas
Nome alunos 1 Título UC. Título – slide 2 Conteúdo Conteúdo 2.
Comandos SQL.
POTENCIAÇÃO E RAIZ QUADRADA DE NÚMEROS RACIONAIS
GINÁSTICA LABORAL UM NOVO CAMINHO.
Contagem Sequencial do Estoque
Contagem Sequencial do Estoque
Transcrição da apresentação:

Listas Encadeadas Circulares, Listas com “Headers” e Listas Duplamente Encadeadas

Motivação para listas duplamente encadeadas e circulares

LISTAS CIRCULARES Um dos inconvenientes do emprego de listas encadeadas consiste no caso de, dado um ponteiro para um nó p de uma lista encadeada, não se ter acesso aos nós que precedem o nó p. Este inconveniente pode ser contornado com o emprego de listas circulares. Listas circulares são listas encadeadas nas quais o ponteiro do último nó deixa de ser aterrado para apontar o primeiro nó da lista. A lista assim obtida não tem um primeiro nó nem último nó “naturais”. Uma convenção útil é apontar o ponteiro externo (para a lista circular) para o último nó, sendo o conceito de último vindo de tempo de inclusão.

Listas circulares Ponteiros aterrados representam listas circulares vazias

Listas circulares – inclusão (1) Inclusão de um nó com endereço apontado por p na frente e na retaguarda de uma lista circular apontada por l A inclusão na retaguarda é uma inclusão na frente seguida de l ← p

Listas circulares – inclusão (2)

Listas circulares – inclusão (3) Procedimento sem tipo insert_front(NODEPTR l, NODEPTR p) Início Se (l = NULL) então l ← p (*p).link ← p /*do registro apontado por p seleciona-se o atributo link */ senão (*p).link ← (*l).link (*l).link ← p Fim do Se Fim do Procedimento

Listas circulares – inclusão (4)

Listas circulares – inclusão (5) Procedimento sem tipo insert_rear(NODEPTR l, NODEPTR p) Início Se (l = NULL) então l ← p (*p).link ← p /*do registro apontado por p seleciona-se o atributo link */ senão (*p).link ← (*l).link (*l).link ← p Fim do Se l ← p Fim do Procedimento

Listas circulares – exclusão (1) Exclusão do nó da frente de uma lista circular na qual l aponta o último nó com a recuperação da informação desse nó em y

Listas circulares – exclusão (2)

Listas circulares – exclusão (3) Procedimento tipo inteiro exclude_circlist(NODEPTR l, tipo datum y) Início Se (l = NULL) então retorne(MENOS_UM) senão p ← (*l).link /*do registro apontado por l selecionar atributo datum */ y ← (*p).datum /*do registro p selecionar atributo link */ (*l).link ← (*p).link freenode(p) Se (l = p) l ← NULL Fim do Se retorne(ZERO) Fim do Procedimento

“HEADERS” “Header” ou cabeça de lista é um nó mantido em frente a uma lista porém sem representar nenhum elemento específico da lista. Os cabeças de lista apontam para o primeiro nó das respectivas listas. Os campos de informação (datum) dos “headers” ou não são usados ou contém informações globais sobre a lista. Os ponteiros externos para as listas, na presença dos “headers”, passam a apontar os “headers” das listas ao invés de seus primeiros elementos. A presença dos “headers” permite a utilização de dados estatísticas sobre as listas além de simplificar substancialmente os algoritmos, já que com “headers as listas nunca ficam vazias.

“Headers” Frequentemente os “headers” são representados gráficamente como nós com o campo datum hachurado

Listas com “headers” – inclusão (1) Com o uso de “headers” a inclusão de nós na frente de listas se torna

Listas com “headers” – inclusão (2)

Listas com “headers” – inclusão (3) Procedimento sem tipo include_header(NODEPTR l, NODEPTR q) Início (*q).link ← (*l).link /*do registro apontado por q selecionar o atributo link */ (*l).link ← q Fim do Procedimento

Listas com “headers” – exclusão (1) Com o uso de “headers” a exclusão de nós na frente de listas se torna

Listas com “headers” – exclusão (2)

Listas com “headers” – exclusão (3) Procedimento tipo inteiro exclude_header(NODEPTR l, tipo datum y) Início Se (l = NULL) então retorne(MENOS_UM) senão p ← (*l).link /*do registro apontado por l selecionar o atributo datum */ y ← (*p).datum /*do registro apontado por p selecionar o atributo link */ (*l).link ← (*p).link freenode(p) retorne(ZERO) Fim do Se Fim do Procedimento

LISTAS DUPLAMENTE ENCADEADAS Alterando-se os nós de listas encadeadas de forma que cada nó passe a contar, além do registro de informação e do ponteiro para o sucessor, também um ponteiro para antecessor se obtém listas duplamente encadeadas

LISTAS DUPLAMENTE ENCADEADAS

LISTAS DUPLAMENTE ENCADEADAS Uma propriedade característica das listas duplamente encadeadas é expressa por: (*(*p).right).left = p = (*(*p).left).right EXEMPLO

LISTAS DUPLAMENTE ENCADEADAS Memória

LISTAS DUPLAMENTE ENCADEADAS – Inclusão (1) inclusão do nó apontado por q à direita do nó apontado por p

LISTAS DUPLAMENTE ENCADEADAS – Inclusão (2)

LISTAS DUPLAMENTE ENCADEADAS – Inclusão (3) Procedimento sem tipo insert_double(NODEPTR p, NODEPTR q) Início (*q).left ← p /*do registro apontado por q seleciona-se o atributo left */ (*q).right ← (*p).right /*do registro apontado por q seleciona-se o atributo right */ (*(*p).right)).left ← q /*do registro apontado por (*p).right seleciona-se o atributo left */ (*p).right ← q /*do registro apontado por p seleciona-se o atributo right */ Fim do Procedimento

LISTAS DUPLAMENTE ENCADEADAS – Exclusão (1) exclusão do nó apontado por q

LISTAS DUPLAMENTE ENCADEADAS – Exclusão (2)

LISTAS DUPLAMENTE ENCADEADAS – Exclusão (3) Procedimento tipo inteiro exclude_double(NODEPTR q, tipo datum y) Início Se (q = NULL) então retorne(MENOS_UM) senão y ← (*q).datum (*(*q).left).right ← (*q).right /*do registro apontado por (*q).left seleciona-se o atributo right. Do registro apontado por q seleciona-se o atributo right */ (*(*q).right).left ← (*q).left /*do registro apontado por (*q).right seleciona-se o atributo left. Do registro apontado por q seleciona-se o atributo left */ freenode(q) retorne(ZERO) Fim do Se Fim do Procedimento