Algoritmos e Estruturas de Dados II IEC013

Documentos relacionados
Prof. Jesus José de Oliveira Neto

Estrutura de Dados. Ricardo José Cabeça de Souza Parte 9

Lista de Exercícios sobre Listas Implementadas por Encadeamento

Lista de Exercícios 04

Listas Ligadas (Encadeadas) Listas Simplesmente Encadeadas

LISTAS ENCADEADAS OU NÃO- SEQÜENCIAIS. Estrutura de Dados

Estruturas de Dados I

Listas Lineares. Livro Projeto de Algoritmos Nívio Ziviani Capítulo 3 Seção 3.1

Aula 13: Listas encadeadas (estruturas lineares)

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

Listas Lineares. continuando...

Filas. Prof. Túlio Toffolo BCC202 Aula 12 Algoritmos e Estruturas de Dados I

Linguagem C: Listas Encadeadas

BCC202 - Estrutura de Dados I

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

Algoritmos e Estruturas de Dados I

Lista Encadeada (Linked List)

Estruturas de Dados Aula 12: Outras Implementações de Listas 18/04/2011

Fontes Bibliográficas. Listas Circulares. Função Imprime

Estrutura de Dados Listas

Algoritmos e Estruturas de Dados. Prof. Marcelo Zorzan Profa. Melissa Zanatta

BCC202 - Estrutura de Dados I

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

Introdução a Programação. Listas Encadeadas

Estruturas de Dados Estruturas de Dados Fundamentais

Árvores Binária de Busca. Prof. César Melo DCC/ICE/UFAM

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Algoritmos e Estruturas de dados

Aula 05: Listas Encadeadas. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP

Listas Lineares. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Instituto de C. Filas. Luis Martí Instituto de Computação Universidade Federal Fluminense -

Aplicações de listas e outras estruturas

Edital de Seleção 024/2017 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões

Árvore Binária de Busca. Prof. César Melo

Aplicações de listas Outras estruturas

Estruturas de Dados. Profº Carlos Alberto Teixeira Batista

Aula 14 Listas Duplamente Encadeadas. prof Leticia Winkler

INF1007: Programação 2 8 Listas Encadeadas. (c) Dept. Informática - PUC-Rio 1

ESTRUTURA DE DADOS LISTAS LINEARES

Módulo 10 Listas Encadeadas

Listas Encadeadas. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Estrutura de Dados e Algoritmos e Programação e Computadores II. Aula 4: Listas Estáticas e Dinâmicas

Programação II. Listas Encadeadas (Linked Lists) Bruno Feijó Dept. de Informática, PUC-Rio

Árvores Binárias de Busca (ABB) 18/11

ESTRUTURA DE DADOS ESTRUTURAS E PONTEIROS

ÁRVORE BINÁRIA DE BUSCA

Estruturas de Dados Aula 10: Listas (parte 2) 19/04/2011

PRIMEIRA AVALIAÇÃO IDENTIFICAÇÃO. Nome: 22/09/2010

Professora Jeane Melo

LISTAS LINEARES. Estrutura de Dados

Aula 07: Algoritmos de busca e Listas encadeadas

Estrutura de Dados. Estrutura de Dados Recursividade. Exemplo: 5! = 5 x 4! 4! = 4 x 3! 3! = 3 X 2! 2! = 2 x 1! 1! = 1 x 0!

Tipos e Estruturas de Dados Profa. Graça Nunes Lista de Exercícios (Listas Encadeadas, Duplamente Encadeadas e Circulares)

1. Listas sequenciais versus listas ligadas. Lista sequencial

Árvores B. Prof. Márcio Bueno. / Fonte: Material da Prof a Ana Eliza Lopes Moura

SCC Algoritmos e Estruturas de Dados I

Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP. Aula 07: Filas

Métodos Computacionais. Variações de Listas Encadeadas

Capítulo 8: Abstrações de dados

L I C R P * * V O * * A * A F * * * * *

Matrizes esparsas: definição

Aplicações de listas e outras estruturas. SCC-502 Algoritmos e Estruturas de Dados I

Árvores Binárias de Busca (ABB) 18/11

ESTRUTURA DE DADOS VETORES E LISTAS LINEARES

Estruturas de Dados Aula 11: TAD Pilha

Aula 10 Alocação Dinâmica de Memória Listas Encadeadas. prof Leticia Winkler

12. Filas Interface do tipo fila

Estrutura de Dados: Lista Linear. Parte I Introdução e Listas Sequenciais Estáticas

Métodos Computacionais. Listas Encadeadas

Listas Lineares Ordenadas

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

1/36 LISTAS. Programação II

Algoritmos e Estruturas de Dados II IEC013

Estrutura de Dados: Lista Linear. Parte I Introdução e Listas Sequenciais Estáticas

Busca em Memória Secundária. Busca em Memória Secundária

INF 1620 P3-25/11/05 Questão 1 Nome:

ANHANGUERA ESTRUTURA DE DADOS AULA 06 LISTAS CIRCULARES E DUPLAMENTE ENCADEADAS. Prof. Thomás da Costa

Lista com descritor (continuação)

Listas - Outras. Listas Circulares Nós Cabeça Listas Duplamente Ligadas/Encadeadas Aplicações

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

O que é um jogo digital?

Pilhas e Filas. Nádia Félix e Hebert Coelho

Aplicações de listas e outras estruturas

ÁRVORES BINÁRIAS DE BUSCA. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

INF P4-12/12/09 Questão 1 Nome:

Algoritmos e Estrutura de Dados. Aula 05 Estrutura de Dados: Listas (Parte II) Prof. Tiago A. E. Ferreira

Módulo 4. Listas Encadeadas. Algoritmos e Estruturas de Dados II C++ (Rone Ilídio)

Listas Estáticas. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof.

Listas ordenadas. SCC-202 Algoritmos e Estruturas de Dados I. Prof. Thiago A. S. Pardo. Listas em que os elementos estão ordenados por algum critério

Estrutura de Dados (DPADF 0056)

ÁRVORE B. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

DAINF - Departamento de Informática

Listas: nós de cabeçalho, listas não homogêneas, listas generalizadas

ASSOCIAÇÃO PARAIBANA DE ENSINO RENOVADO FACULDADE PARAIBANA DE PROCESSAMENTO DE DADOS ESTRUTURA DE DADOS

Estruturas de Dados - Filas

Aula 7 Encadeamento de Memória

Estrutura de Dados: Aula 3 - Linguagem C

Transcrição:

Algoritmos e Estruturas de Dados II IEC013 Revisão: Listas Encadeadas Prof. César Melo Todos os créditos reservados ao professor Leandro Galvão

Listas Encadeadas Listas encadeadas ou listas ligadas representam uma seqüência de objetos na memória do computador. Exemplo: Lista de afazeres 1. Comprar uma lâmpada 2. Trocar uma lâmpada queimada 3. Procurar uma conta no quarto 4. Pagar uma conta na internet 5. Desligar o computador 6. Dormir

Listas Encadeadas Na lista de afazeres anterior, uma tarefa dependia da execução da tarefa anterior Ação atual Próxima ação

Listas Encadeadas 1. Comprar 1. lâmpada 2 2. Trocar lâmpada 3 3. Procurar 3. conta 4 4. Pagar conta 5 5. Desligar micro 6 6. Dormir fim

Listas Encadeadas :: Representação por vetores Como representar a lista anterior em um programa escrito na Linguagem C? Primeira opção: vetores ou matrizes Tarefa: Comprar lâmpada Trocar lâmpada Procurar conta Pagar conta Desligar micro Dormir Índice: 1 2 3 4 5 6

Listas Encadeadas :: Representação por vetores Primeira opção: vetores ou matrizes Como acrescentar Ligar micro? Tarefa: Comprar lâmpada Trocar lâmpada Procurar conta Pagar Ligar conta micro Desligar micro Dormir Índice: 1 2 3 4 5 6 7

Listas Encadeadas :: Representação por vetores Primeira opção: vetores ou matrizes Os itens da lista são armazenados em posições adjacentes na memória. A lista pode ser percorrida em qualquer direção. A inserção de um novo item pode ser realizada após o último item com custo constante. A inserção de um novo item no meio da lista requer um deslocamento de todos os itens localizados após o ponto de inserção. Retirar um item do início da lista requer um deslocamento de itens para preencher o espaço deixado vazio.

Listas Encadeadas :: Representação por ponteiros Segunda opção: ponteiros Estruturas de dados dinâmicas: : estruturas de dados que contém ponteiros para si próprias. struct lista { char nome_tarefa[30]; float duracao; char responsavel[30];... struct lista *prox; }; ponteiro para a própria estrutura lista

Listas Encadeadas :: Representação por ponteiros Representação gráfica de um elemento da lista: campos de informação próximo nó Cada item é encadeado com o seguinte, mediante uma variável do tipo ponteiro. Permite utilizar posições não adjacentes de memória. É possível inserir e retirar elementos sem necessidade de deslocar os itens seguintes da lista.

Listas Encadeadas :: Representação por ponteiros Cada item em particular de uma lista pode ser chamado de elemento, nó, célula,, ou item. O apontador para o início da lista também é tratado como se fosse uma célula (cabeça( cabeça), para simplificar as operações sobre a lista. O símbolo / representa o ponteiro nulo (NULL( NULL), indicando o fim da lista. p 3 5 2 4 / 162

Operações sobre lista encadeada Podemos realizar algumas operações sobre uma lista encadeadas, tais como: Inserir itens; Retirar itens; Buscar itens. Para manter a lista ordenada, após realizar alguma dessas operações, será necessário apenas movimentar alguns ponteiros (de um a três elementos).

Operações sobre lista encadeada Outras operações possíveis: Criar uma lista Destruir uma lista Ordenar uma lista Intercalar duas listas Concatenar duas listas Dividir uma lista em duas Copiar uma lista em outra

Operações sobre lista encadeada :: Inserção de itens Podemos inserir itens: No começo de uma lista No final de uma lista No meio de uma lista

Operações sobre lista encadeada :: Inserção de itens no início O endereço armazenado no ponteiro p deve ser alterado para o endereço do item a ser acrescido à lista. p 5 2 / 4 3 163

Operações sobre lista encadeada :: Inserção de itens no final O endereço armazenado em p será alterado caso a lista esteja vazia ou O campo prox do último item será alterado. / p 3 / p 3 5 / 164

Operações sobre lista encadeada :: Inserção de itens no meio Campo prox do item a ser inserido recebe o campo prox do item posterior Campo prox do item antecessor recebe o endereço do item a ser inserido p 3 2 4 / 5 lista[5].prox lista[2] lista[3].prox 5 165

Operações sobre lista encadeada :: Remoção de itens no início O endereço armazenado no ponteiro p deve ser alterado para o endereço do item que segue o primeiro item da lista. p 5 2 / 4 166

Operações sobre lista encadeada :: Remoção de itens no final O campo prox do último item será alterado caso a lista contenha mais de um item ou O endereço armazenado em p será alterado para NULL. p 3 5 / p 3 / / 167

Operações sobre lista encadeada :: Remoção de itens no meio Item antecessor recebe o campo prox do item a ser removido lista[3].prox lista[5].prox p 3 5 2 4 / 168

Outros tipos de Listas Encadeadas Existem ainda outras variações de lista encadeada, dentre elas: Listas Duplamente Encadeadas Listas Circulares

Listas Duplamente Encadeadas Cada elemento da lista é ligado a seu sucessor e a seu predecessor. Possibilita um trajeto em ambos os sentidos, simplificando o gerenciamento da lista.

Listas Duplamente Encadeadas A estrutura de dados de um nó de uma lista duplamente encadeada recebe um novo campo: um ponteiro para o nó antecessor. typedef struct elemento TElemento; struct elemento { int nro; TElemento *ant; TElemento *prox; }; 170

Listas Duplamente Encadeadas Vantagens: Facilitar as operações de manuseio dos elementos da lista; Caminhar em ambas as direções Desvantagem: Espaço a mais para armazenar um outro ponteiro; Considere as operações de inserção, inserção ordenada, e remoção; 170

Listas Circulares São listas encadeadas cujo fim aponta para o seu início, formando um círculo que permite uma trajetória contínua na lista. Podem ser: Singularmente encadeadas Duplamente encadeadas

Listas Circulares A estrutura de um nó de uma lista circular permanece a mesma. Dependerá apenas se o encadeamento da lista é duplo ou singular. O que modifica é que não há mais necessidade de dois ponteiros para indicar o início e o fim da lista. Basta marcar um nó da lista para evitar loops. 171

Exercício Considere o seguinte problema que deve ser implementado em uma lista simplesmente encadeada; Uma sequência de números Deve ser armazenada em uma lista; Pede-se que os elementos dessa lista sejam impressos na ordem inversa com que estão encadeado na lista; Ao examinar a sua implementação, busque no seu dia-a-dia, algo que se assemelhe à dinâmica de inclusão dos elementos na lista. 171

Questões