BCC202 - Estrutura de Dados I

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

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

BCC202 - Estrutura de Dados I

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

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

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

LISTAS LINEARES. Estrutura de Dados

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

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

BCC202 - Estrutura de Dados I

Estruturas de Dados Aula 11: TAD Pilha

Ponteiro e lista dinâmica

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

Lista de Exercícios 04

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

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

Pilhas e Filas Encadeadas. Algoritmos e Estruturas de Dados I

Pilhas. Prof. Túlio Toffolo BCC202 Aula 11 Algoritmos e Estruturas de Dados I

Listas Estáticas. Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista

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

Universidade Estadual Paulista Júlio de Mesquita Filho UNESP

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Listas Lineares. continuando...

BCC202 - Estrutura de Dados I

Métodos Computacionais. Listas Encadeadas

PCC104 - Projeto e Análise de Algoritmos

Estruturas de Dados Aula 9: Listas (parte 1) 05/04/2011

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

Lista de Exercícios sobre Listas Implementadas por Encadeamento

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

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

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

Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP. Aula 06: Pilhas

Estrutura de Dados Listas

Filas Implementação Sequencial

Aula T19 BCC202 Pesquisa (Parte 1) Pesquisa Binária. Túlio Toffolo

BCC202 - Estrutura de Dados I

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

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

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

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

Estruturas de Dados Básicas

Estruturas de Dados Básicas

Matrizes Esparsas. atribuição (M, i, j, v) (i, j) IND. v nulo. v não nulo v nulo v não nulo. há espaço. não há espaço. retira substitui nada

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

Linguagem C: Listas Encadeadas

Árvores de Pesquisa (Parte I)

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

Lista Encadeada (Linked List)

ÁRVORES ABB (ÁRVORES BINÁRIAS DE BUSCAS) Sérgio Carlos Portari Júnior

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

Tabelas Hash. Prof. Túlio Toffolo BCC202 Aula 21 Algoritmos e Estruturas de Dados I

Algoritmos e Estruturas de Dados II IEC013

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

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

Listas Lineares Ordenadas

Aula 15: Pesquisa em Memória Primária. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP

SCC Algoritmos e Estruturas de Dados I

Hashing. ACH Introdução à Ciência da Computação II. Delano M. Beder

A regra de acesso aos dados de uma fila é a seguinte: O primeiro elemento que entra (na fila) é o primeiro que sai (FIFO first in, first out).

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

Módulo 10 Listas Encadeadas

SCC122 - Estruturas de Dados. Lista Estática Seqüencial

Professora Jeane Melo

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

Estruturas de Dados Aula 16: Árvores com Número Variável 13/06/2011

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

BCC202 - Estrutura de Dados I

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

Prof. Jesus José de Oliveira Neto

Pilhas e Filas. Livro Projeto de Algoritmos Nívio Ziviani Capítulo 3 Seção 3.2 e 3.3

Aplicações de listas e outras estruturas

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

Algoritmos e Estrutura de Dados II. Árvore. Prof a Karina Oliveira.

Listas: a última das 3 estruturas lineares (Pilhas, Filas e Listas)

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

Matrizes esparsas: definição

Estruturas de Dados Estruturas de Dados Fundamentais

Fontes Bibliográficas. Estruturas de Dados Aula 15: Árvores. Livros:

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

Pilha. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Fila. Algoritmos e Estruturas de Dados I

ÁRVORES E ÁRVORE BINÁRIA DE BUSCA

16/11/2015 Lista Tipo de dado Lista - Implementação Lista - Implementação Lista - Implementação 3

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

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

Estruturas de Dados Filas

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)

Estrutura de Dados (DPADF 0056)

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

Tabelas de hash Acabamos de estudar como implementar uma tabela hashing aberta e estudaremos agora como implementar uma tabela hashing fechada ou

Filas. Nesta aula veremos o ADT fila Em um computador existem muitas filas esperando pela impressora, acesso ao disco ou, num sistema timesharing,

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

Transcrição:

BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) ASN Universidade Federal de Ouro Preto, UFOP Departamento de Computação, DECOM Material elaborado com base nos slides do Prof. Reinaldo Fortes (curso de 2016/01).

Conteúdo 1 Introdução 2 TAD Lista 3 Implementação por ARRAY 4 5 Conclusão 6 Exercícios BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) (2)

Conteúdo 1 Introdução 2 TAD Lista 3 Implementação por ARRAY 4 5 Conclusão 6 Exercícios BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) (3)

Introdução Listas Forma simples de interligar conjuntos. Estrutura que define operações como inserir, retirar e localizar. Podem crescer ou diminuir de tamanho durante a execução de um programa, de acordo com a demanda. Itens podem ser acessados, inseridos ou retirados. BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) (4)

Introdução Listas Outras Operações Concatenação de duas ou mais listas. Partição em duas ou mais listas. Vantagens Manipulação de uma quantidade imprevisível de dados. Manipulação de dados de formato também imprevisível. BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) (5)

Introdução Listas: Definição Sequência de zero ou mais itens. x 0, x 1, x 2,..., x n 1, na qual x i é de um determinado tipo e n representa o tamanho da lista. Sua principal propriedade estrutural envolve as posições relativas dos itens em uma dimensão. Assumindo n >= 0, x 0 é o primeiro item da lista e x n 1 é o último item da lista. x i precede x i+1 para i = 0, 1, 2,..., n 2. x i sucede x i 1 para i = 1, 2, 3,..., n 1. O elemento x i é dito estar na i-ésima posição da lista. Isto não implica que os dados estejam ordenados, estes conceitos remetem apenas à posição na lista. A lista é linear. BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) (6)

Conteúdo 1 Introdução 2 TAD Lista 3 Implementação por ARRAY 4 5 Conclusão 6 Exercícios BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) (7)

TAD Lista TAD Lista O que o TAD Lista deveria conter? Representação do tipo da lista. Conjunto de operações que atuam sobre a lista. Quais operações deveriam fazer parte da lista? Depende de cada aplicação. Mas, um conjunto padrão pode ser definido. BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) (8)

TAD Lista Conjunto Padrão de operações Operações necessárias à grande maioria das aplicações: Criar uma lista linear vazia. Inserir um novo item. Retirar um item. Localizar um item para examinar ou alterar seu conteúdo. Combinar duas ou mais listas em uma única lista. Dividir uma lista em duas ou mais listas. Fazer uma cópia da lista. Ordenar os itens da lista de acordo com um de seus campos. Pesquisar a ocorrência de um item com um valor específico. BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) (9)

TAD Lista Protótipo de uma Lista Conjunto de operações: TLista_Iniciar(Lista): cria uma nova lista. TLista_Insere(Lista, x): insere x no final da lista. TLista_Retira(Lista, p, x): retorna o item x que está na posição p da lista, retirando-o da lista. TLista_EhVazia(Lista): retorna true se a lista estiver vazia; false caso contrário. TLista_Imprime(Lista): imprime os itens da lista na ordem de ocorrência. BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) (10)

TAD Lista Implementação de uma Lista Várias estruturas de dados podem ser usadas para representar listas lineares, cada uma com vantagens e desvantagens particulares. As duas representações mais utilizadas são: Implementação por arrays. Implementação por ponteiros. BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) (11)

Conteúdo 1 Introdução 2 TAD Lista 3 Implementação por ARRAY 4 5 Conclusão 6 Exercícios BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) (12)

Implementação por ARRAY TAD Lista: Implementação por ARRAY Os itens são armazenados em posições contíguas de memória. A lista pode ser percorrida em qualquer direção. BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) (13)

Implementação por ARRAY TAD Lista: Implementação por ARRAY A inserção de um novo item no final tem Custo O(1). A inserção de um novo item no meio tem Custo O(n). A remoção de um item no meio tem Custo O(n). Os dois últimos requerem deslocamentos. BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) (14)

Implementação por ARRAY TAD Lista: Implementação por ARRAY Os itens são armazenados em um array de tamanho suficiente para comportar todos os elementos da lista. O campo Ultimo aponta para a posição seguinte à do último elemento da lista. BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) (15)

Implementação por ARRAY TAD Lista: Implementação por ARRAY O i-ésimo item da lista está armazenado na (i-1)-ésima posição do array, 0 <= i < Ultimo. A constante MaxTam define o tamanho máximo permitido para a lista. BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) (16)

Implementação por ARRAY TAD Lista: Implementação por ARRAY: Código Exemplo (.h) 1 # define INICIO 0 2 # define MAXTAM 1000 3 4 typedef struct { 5 int chave ; 6 /* outros campos */ 7 } TItem ; 8 9 typedef struct { 10 TItem item [ MAXTAM ]; 11 int primeiro, ultimo ; 12 } TLista ; BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) (17)

Implementação por ARRAY TAD Lista: Implementação por ARRAY: Código Exemplo (.h) 14 /* procedimentos e funcoes da TAD */ 15 void TLista_FazVazia ( TLista * plista ); 16 int TLista_EhVazia ( TLista * plista ); 17 int TLista_Insere ( TLista * plista, TItem x); 18 int TLista_Retira ( TLista * plista, int p, TItem * px); 19 void TLista_Imprime ( TLista * plista ); 20 int Tlista_Get ( TLista * plista, int p, TItem * px); 21 int Tlista_Tamanho ( TLista * plista ); BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) (18)

Implementação por ARRAY TAD Lista: Implementação por ARRAY: Código Exemplo (.c) 1 void TLista_FazVazia ( TLista * plista ) { 2 plista - > primeiro = INICIO ; 3 plista -> ultimo = plista -> primeiro ; 4 } 5 6 int TLista_EhVazia ( Tlista * plista ) { 7 return ( plista -> ultimo == plista -> primeiro ); 8 } 9 10 int TLista_Insere ( Tlista * plista, TItem x) { 11 if( plista - > ultimo == MaxTam ) 12 return 0; /* lista cheia */ 13 plista -> item [ plista -> ultimo ++] = x; 14 return 1; 15 } BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) (19)

Implementação por ARRAY TAD Lista: Implementação por ARRAY: Código Exemplo (.c) 17 int TLista_Retira ( Tlista * plista, int p, TItem * px) { 18 if( TLista_EhVazia ( plista ) p >= plista - > ultimo ) 19 return 0; 20 21 int cont ; 22 *px = plista -> Item [p]; 23 plista -> ultimo - -; 24 for ( cont = p +1; cont <= plista - > ultimo ; cont ++) 25 plista -> item [cont -1] = plista -> item [ cont ]; 26 return 1; 27 } 28 29 void TLista_Imprime ( Tlista * plista ) { 30 int i; 31 for (i = plista -> primeiro ; i < plista -> ultimo ; i ++) 32 printf ("%d\n", plista -> item [i]. chave ); 33 } BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) (20)

Implementação por ARRAY TAD Lista: Implementação por ARRAY Vantagens Economia de memória (apontadores implícitos). Acesso a qualquer elemento da lista é feito em tempo O(1). Desvantagens Custo para inserir itens da lista pode ser O(n). Custo para retirar itens da lista pode ser O(n). Quando não existe previsão sobre o crescimento da lista, o array que define a lista deve ser alocado de forma dinâmica. Pode ser necessária a realocação do array. BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) (21)

Conteúdo 1 Introdução 2 TAD Lista 3 Implementação por ARRAY 4 5 Conclusão 6 Exercícios BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) (22)

TAD Lista: Qual o principal problema de utilizar array para implementar listas? E se a lista aumentar e depois diminuir drasticamente de tamanho? Solução: Listas Encadeadas!!!. O que é? Implementação de uma lista utilizando apenas ponteiros. BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) (23)

TAD Lista: Lista Encadeada Características: Tamanho da lista não é pré-definido. Cada elemento aponta para o próximo. Elementos não estão contíguos na memória (a alocação é dinâmica). BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) (24)

TAD Lista: Lista Encadeada: Elementos Elemento da lista: Armazena as informações sobre cada elemento. Aponta para o próximo elemento. Assim, é definido como uma estrutura que possui: Campos representando as informações do elemento. Ponteiro para o próximo elemento. BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) (25)

TAD Lista: Lista Encadeada: Elementos Uma lista pode ter uma célula cabeça, antecedendo o primeiro elemento. Pode possuir também um apontador para o último elemento. BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) (26)

Lista Encadeada COM cabeça: Estruturas básicas 1 typedef struct { 2 /* Componentes de um item : " info " */ 3 } TItem ; 4 5 typedef struct celula { 6 struct celula * pprox ; 7 TItem item ; 8 } TCelula ; 9 10 typedef struct { 11 TCelula * pprimeiro, * pultimo ; 12 } TLista ; BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) (27)

TAD Lista: Lista Encadeada: Criar Lista Vazia BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) (28)

TAD Lista: Lista Encadeada: INSERÇÃO de Novos Elementos 3 opções de posição onde se pode inserir: Primeira posição. Última posição. Após um elemento E. BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) (29)

TAD Lista: Lista Encadeada: INSERÇÃO na Primeira Posição BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) (30)

TAD Lista: Lista Encadeada: INSERÇÃO na Primeira Posição BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) (30)

TAD Lista: Lista Encadeada: INSERÇÃO na Primeira Posição BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) (30)

TAD Lista: Lista Encadeada: INSERÇÃO na Última Posição BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) (31)

TAD Lista: Lista Encadeada: INSERÇÃO na Última Posição BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) (31)

TAD Lista: Lista Encadeada: INSERÇÃO na Última Posição BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) (31)

TAD Lista: Lista Encadeada: INSERÇÃO Após o Elemento E BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) (32)

TAD Lista: Lista Encadeada: INSERÇÃO Após o Elemento E BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) (32)

TAD Lista: Lista Encadeada: INSERÇÃO Após o Elemento E BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) (32)

TAD Lista: Lista Encadeada: RETIRADA de Elementos 3 opções de posição onde se pode retirar: Primeira posição. Última posição. Um elemento E. BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) (33)

TAD Lista: Lista Encadeada: RETIRADA na Primeira Posição BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) (34)

TAD Lista: Lista Encadeada: RETIRADA na Primeira Posição BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) (34)

TAD Lista: Lista Encadeada: RETIRADA na Primeira Posição BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) (34)

TAD Lista: Lista Encadeada: RETIRADA na Última Posição BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) (35)

TAD Lista: Lista Encadeada: RETIRADA na Última Posição BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) (35)

TAD Lista: Lista Encadeada: RETIRADA na Última Posição BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) (35)

TAD Lista: Lista Encadeada: RETIRADA na Última Posição BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) (35)

TAD Lista: Lista Encadeada: RETIRADA do Elemento E BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) (36)

TAD Lista: Lista Encadeada: RETIRADA do Elemento E BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) (36)

TAD Lista: Lista Encadeada: RETIRADA do Elemento E BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) (36)

TAD Lista: Lista Encadeada: RETIRADA do Elemento E BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) (36)

Conteúdo 1 Introdução 2 TAD Lista 3 Implementação por ARRAY 4 5 Conclusão 6 Exercícios BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) (37)

Conclusão Conclusão Nesta aula tivemos o primeiro contato com a estrutura de dados Lista. Este tópico é muito importante para o entendimento das estruturas de dados que virão a seguir. Próxima aula: Lista (Parte 2) Implementação de lista encadeada (por ponteiro). Dúvidas? BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) (38)

Conteúdo 1 Introdução 2 TAD Lista 3 Implementação por ARRAY 4 5 Conclusão 6 Exercícios BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) (39)

Exercícios propostos Exercício 01 Implemente um TAD Lista utilizando Array, acrescentando as seguintes operações ao conjunto de operações vistos nesta aula: Concatenação de duas listas. Divisão de uma lista em duas. Cópia de uma lista. Pesquisa por um elemento na lista. BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) (40)