Algoritmos e Estruturas de dados

Documentos relacionados
Algoritmos e Estruturas de dados

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

BCC202 - Estrutura de Dados I

Listas Lineares. continuando...

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

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

Algoritmos e Estruturas de Dados II IEC013

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

Pilhas e Filas Encadeadas. Algoritmos e Estruturas de Dados I

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

Métodos Computacionais. Listas Encadeadas

Listas Ligadas (Encadeadas) Listas Simplesmente Encadeadas

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

Estruturas de Dados I

Lista Encadeada (Linked List)

BCC202 - Estrutura de Dados I

Estruturas de Dados. Filas em que a prioridade de remoção não é cronológica. Maior prioridade não é do elemento que ingressou primeiro

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

Aplicações de listas e outras estruturas

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

Estrutura de Dados (DPADF 0056)

Linguagem C: Listas Encadeadas

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

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

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

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

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

Lista Ordenada. Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 1 / 35

Universidade Federal do Ma Curso de Ciência da Computação

Lista com descritor (continuação)

LISTAS LINEARES. Estrutura de Dados

Instituto de C. Linguagem C: Listas. Luis Martí Instituto de Computação Universidade Federal Fluminense -

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

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

SCC 202 Prova 1. 28/9/2010 Resolução e Comentários

Aplicações de listas Outras estruturas

Listas: a última das 3 estruturas lineares (Pilhas, Filas e Listas)... árvores e grafos são não lineares!

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

Algoritmos e Estruturas de Dados Prof. Osório PIP/CA - Aula 05 Pag.: 1

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

Árvores de Pesquisa (Parte I)

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

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

SCC Algoritmos e Estruturas de Dados I

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

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

Introdução à Computação II (Noturno) BCC Unesp Rio Claro/SP 2015 em PDF via Moodle: Escolha apenas 5 exercícios para entrega Exercício 01 (Pilhas)

Aplicações de listas e outras estruturas

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

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

Listas ligadas/listas encadeadas

Módulo 10 Listas Encadeadas

INF 1620 P2-01/11/03 Questão 1 Nome:

Aula 14 Listas Duplamente Encadeadas. prof Leticia Winkler

Estrutura de Dados (DPADF 0056)

ESTRUTURA DE DADOS VARIÁVEIS E PONTEIROS

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

Listas Duplamente Encadeadas

ANHANGUERA ESTRUTURA DE DADOS AULA 04 MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA. Prof. Thomás da Costa

Tabelas Hash. Prof. Túlio Toffolo BCC202 Aulas 23 e 24 Algoritmos e Estruturas de Dados I

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

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

Árvores & Árvores Binárias

Aula 7 Encadeamento de Memória

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

Estruturas de Dados Estruturas de Dados Fundamentais

Listas e matrizes esparsas Orthogonal List Representation (Listas Cruzadas) 21/10/2010

Matrizes Esparsas. Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista

REVISÃO DE C. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

Pesquisa em memória primária: hashing. Algoritmos e Estruturas de Dados II

Copiar para o ficheiro ArvoreBinaria.h e adaptar as funções associadas às operações sobre árvores binárias (3.1 a 3.12)

INF 1620 P4-13/12/01 Questão 1 Nome:

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

Filas Implementação Sequencial

Árvores. Prof. César Melo DCC/ICE/UFAM

INE5408 Estruturas de Dados

Lista Encadeada Simples. Métodos Computacionais Victor Casé

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

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

Universidade de São Paulo

Árvores. Prof. César Melo DCC/ICE/UFAM

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

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

Matrizes esparsas: definição

Listas ordenadas. Listas ordenadas. Listas ordenadas. Listas ordenadas. Listas ordenadas. Listas ordenadas. Definição

Tabelas de dispersão/hash

Introdução a Programação. Tipos Abstratos de Dados Implementando Pilha e Fila

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

Árvore B. Uma Árvore B de ordem m éumaárvore,talque: Cada nó contém no máximo m

Fila e Deque. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof.

Pesquisa em Memória Primária Hashing

Algoritmos e Estruturas de Dados I

Fila. Algoritmos e Estruturas de Dados I

Árvores Binárias. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich

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

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!

Transcrição:

Algoritmos e Estruturas de dados Listas Encadeadas - continuação Prof. Dr. Fábio Rodrigues de la Rocha (Listas Encadeadas - continuação) 1 / 10

Listas encadeadas com indicadores de inicio e fim Anteriormente foram apresentadas listas encadeadas que eram assim definidas: 1 struct tipo_ l { 2 int valor ; 3 struct tipo_ l * proximo ; 4 }; 5 6 typedef struct { 7 struct tipo_ l * inicio ; 8 int quantidade ; 9 } Tipo_Lista ; Ou seja, existe um indicador de inicio da lista. Este indicador é utilizado por algumas funções para saber onde a lista começa. Sabendo (Listas Encadeadas onde - continuação) a lista começa, basta acessar o campo próximo e 2 / 10

Listas com indicador de início e fim Uma variação do esquema apresentado é utilizar um indicador de início e fim. Utilizando este indicador pode-se conhecer quem é o último elemento da lista, sem a necessidade de percorrê-la. Isto é especialmente útil numa operação de inserção, onde devemos inserir elementos ao final da lista. 1 struct tipo_ l { 2 int valor ; 3 struct tipo_ l * proximo ; 4 }; 5 6 typedef struct { 7 struct tipo_ l * inicio ; 8 struct tipo_ l * fim ; 9 int quantidade ; 10 } Tipo_Lista ; (Listas Encadeadas - continuação) 3 / 10

Exercício Escreva as funções : inicializa_lista(&l) - inicializa a lista; insere_elemento(&l,x) - Insere um x elemento no final da lista; mostra_lista(l) - Mostra os elementos da lista. (Listas Encadeadas - continuação) 4 / 10

Listas duplamente encadeadas Uma outra variação possível para listas encadeadas são as chamadas listas duplamente encadeadas. Uma lista duplamente encadeada é uma lista encadeada que além de possuir um ponteiro para o próximo elemento possuí um ponteiro para o elemento anterior. Veja inicio Fim Quantidade typedef struct { struct tipo_l inicio; struct tipo_l fim; int quantidade; } struct tipo_l { int valor; struct tipo_l proximo; struct tipo_l anterior; }; valor Anterior Proximo valor Anterior Proximo na figura: valor Anterior Proximo (Listas Encadeadas - continuação) 5 / 10

Listas duplamente encadeadas Vantagens das listas duplamente encadeadas: É possível percorrer a lista em qualquer direção. Se a lista estiver ordenada em ordem crescente, podemos decidir percorrê-la partindo do fim e sempre consultar o indicador anterior, até chegar no primeiro elemento da lista. Se possuirmos uma operação pesquisa (que retorna o ponteiro do elemento encontrado ou NULL se não existe elemento) podemos facilmente criar uma operação elimina. Por que? Pois se soubermos o endereço do elemento, podemos acessar o anterior e o próximo e atualizar os ponteiros destes antes de liberar a memória. 1 // procura o valor 100; 2 x = pesquisa (L,100) ; 3 if (x!= NULL ) elimina (&L,x); (Listas Encadeadas - continuação) 6 / 10

Listas duplamente encadeadas Desvantagens das listas duplamente encadeadas: Gasto de memória com ponteiros; Mais variáveis para atualizar quando se realiza operações de inserção/eliminação. (Listas Encadeadas - continuação) 7 / 10

Exercício Implemente em C as seguintes funções para trabalhar com listas duplamente encadeadas: inicializa(&l); insere(&l,x); end=pesquisa (L, x); elimina (&L, end); elimina_todos_seguintes (&L,end) Elimina todos os elementos seguintes ao elemento informado. (Listas Encadeadas - continuação) 8 / 10

Exercício Crie uma lista simplesmente encadeada para armazenar os pontos de um poĺıgono. Crie as funções: inicializa_poligono(&p), insere_pontos_poligono(&p,x,y) e calcula_perímetro_polígono(p); P2(X2, Y2); P3(X3,Y3); P1(X1,Y1); P4(X4,Y4); (Listas Encadeadas - continuação) 9 / 10

Exercício Crie uma lista simplesmente encadeada para armazenar os pontos de uma função. Crie as funções: inicializa_funcao(&p), insere_pontos_funcao(&p,x,y) e calcula_integral(p, x_inicial, x_final); P1(x1,y1); P2(x2,y2) P4(x4,y4); P5(x5,y5); P3(x3,y3); P6(x6,y6) P7(x7,y7); P8(x8,y8); P9(x9,y9); x1 x2 x3 x4 x5 x6 x7 x8 x9 Ex: Calcular a integral entre x4 x8 ou seja, a area sob a curva (Listas Encadeadas - continuação) 10 / 10