23
Aula T-09 – BCC202 Aula T-09 – BCC202 Listas (Parte 1) Listas (Parte 1) Túlio Toffolo Túlio Toffolo www.decom.ufop.br/toffolo www.decom.ufop.br/toffolo

Aula T-09 – BCC202 Listas (Parte 1) Túlio Toffolo decom.ufop.br/toffolo

Embed Size (px)

DESCRIPTION

Aula T-09 – BCC202 Listas (Parte 1) Túlio Toffolo www.decom.ufop.br/toffolo. Uso do Moodle. Entrega dos trabalhos, atividades práticas e listas de exercício serão feitas via Moodle : www.decom.ufop.br/moodle - PowerPoint PPT Presentation

Citation preview

Page 1: Aula T-09 – BCC202 Listas (Parte 1) Túlio Toffolo decom.ufop.br/toffolo

Aula T-09 – BCC202Aula T-09 – BCC202

Listas (Parte 1)Listas (Parte 1)

Túlio ToffoloTúlio Toffolowww.decom.ufop.br/toffolowww.decom.ufop.br/toffolo

Page 2: Aula T-09 – BCC202 Listas (Parte 1) Túlio Toffolo decom.ufop.br/toffolo

2/2

Uso do MoodleUso do Moodle

• Entrega dos trabalhos, atividades práticas e listas de exercício serão feitas via Moodle:

www.decom.ufop.br/moodle

• Importante: o aluno deve se cadastrar na disciplina BCC202 até quinta-feira, dia 23/09, sob pena de perder parte dos pontos extras e de participação.

Page 3: Aula T-09 – BCC202 Listas (Parte 1) Túlio Toffolo decom.ufop.br/toffolo

3/3

Ementa do CursoEmenta do Curso

• Tipos Abstratos de Dados / Alocação Dinâmica

• Análise de Algoritmos e Recursividade

• Estruturas de dados • Listas, filas, pilhas e árvores

• Métodos de ordenação (por comparação)• Selectsort, Insertsort, Bubblesort, Mergesort, Shellsort,

Heapsort, Quicksort, etc.

• Métodos de pesquisa• Simples, binária, Hashing, árvores digitais

Page 4: Aula T-09 – BCC202 Listas (Parte 1) Túlio Toffolo decom.ufop.br/toffolo

4/4

ListasListas

• Forma simples de interligar conjuntos

• Estrutura que define as operações inserir, retirar e localizar são definidas.

• 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 de uma lista.

Page 5: Aula T-09 – BCC202 Listas (Parte 1) Túlio Toffolo decom.ufop.br/toffolo

5/5

ListasListas

Outras operações:

• Concatenação de duas ou mais listas

• Partição de lista em duas ou mais listas

Vantagens:

• Manipulação de quantidade imprevisível de dados

• Manipulação de dados de formato também imprevisível

Page 6: Aula T-09 – BCC202 Listas (Parte 1) Túlio Toffolo decom.ufop.br/toffolo

6/6

ListasListas

Especialmente úteis em aplicações do tipo:

• Manipulação simbólica

• Simulação

• Gerência de Memória

• Compiladores

• Etc.

Page 7: Aula T-09 – BCC202 Listas (Parte 1) Túlio Toffolo decom.ufop.br/toffolo

7/7

Listas - DefiniçãoListas - Definição

• Sequência de zero ou mais itens

• x1, x2, ..., xn

na qual xi é de um determinado tipo e n

representa o tamanho da lista linear.

• Sua principal propriedade estrutural envolve as posições relativas dos itens em uma dimensão.

• Assumindo n ≥ 1, x1 é o primeiro item da lista e xn é

o último item da lista.

Page 8: Aula T-09 – BCC202 Listas (Parte 1) Túlio Toffolo decom.ufop.br/toffolo

8/8

Listas - DefiniçãoListas - Definição

• Sua principal propriedade estrutural envolve as posições relativas dos itens em uma dimensão.

• xi precede xi+1 para i = 1, 2, ..., n – 1

• xi sucede xi-1 para i = 2, 3, ..., n

• O elemento xi é dito estar na i-ésima posição

da lista.

Page 9: Aula T-09 – BCC202 Listas (Parte 1) Túlio Toffolo decom.ufop.br/toffolo

9/9

TAD ListaTAD Lista

• O que deveria conter?• Representação do tipo da lista• Conjunto de operações que atuam sobre a

lista

• Quais operações deveria fazer parte da TAD?

O conjunto de operações a ser definido depende de cada aplicação.

Page 10: Aula T-09 – BCC202 Listas (Parte 1) Túlio Toffolo decom.ufop.br/toffolo

10/10

TAD Listas – Operações

• Um conjunto de operações necessário a uma maioria de aplicações é: Criar uma lista linear vazia. Inserir um novo item imediatamente após o i-

ésimo item. Retirar o i-ésimo item. Localizar o i-ésimo item para examinar e/ou

alterar o conteúdo de seus componentes.

Page 11: Aula T-09 – BCC202 Listas (Parte 1) Túlio Toffolo decom.ufop.br/toffolo

11/11

TAD Listas – Operações

Combinar duas ou mais listas lineares em uma lista única.

Dividir uma lista linear em duas ou mais listas.

Fazer uma cópia da lista linear. Ordenar os itens da lista em ordem

ascendente ou descendente, de acordo com alguns de seus componentes.

Pesquisar a ocorrência de um item com um valor particular em algum componente.

Page 12: Aula T-09 – BCC202 Listas (Parte 1) Túlio Toffolo decom.ufop.br/toffolo

12/12

Exemplo de Protótipo de Lista

• Exemplo de Conjunto de Operações:

• FLVazia(Lista). Faz a lista ficar vazia.• LInsere(Lista, x). Insere x após o último item

da lista.• LRetira(Lista, p, x). Retorna o item x que está

na posição p da lista, retirando-o da lista e deslocando os itens a partir da posição p+1 para as posições anteriores.

• LEhVazia(Lista). Esta função retorna true se lista vazia; senão retorna false.

• LImprime(Lista). Imprime os itens da lista na ordem de ocorrência.

Page 13: Aula T-09 – BCC202 Listas (Parte 1) Túlio Toffolo decom.ufop.br/toffolo

13/13

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.

Page 14: Aula T-09 – BCC202 Listas (Parte 1) Túlio Toffolo decom.ufop.br/toffolo

14/14

Implementação de Lista por Array

• Os itens da lista são armazenados em posições contíguas de memória.

• A lista pode ser percorrida em qualquer direção.

• A inserção de um novo item no final tem custo O(1).

Page 15: Aula T-09 – BCC202 Listas (Parte 1) Túlio Toffolo decom.ufop.br/toffolo

15/15

Implementação de Lista por Array

• A inserção de um novo item no meio da lista requer um deslocamento de todos os itens... Custo O(n)

• Retirar um item do início da lista requer um deslocamento de itens para preencher o espaço deixado vazio...Custo O(n)

Page 16: Aula T-09 – BCC202 Listas (Parte 1) Túlio Toffolo decom.ufop.br/toffolo

16/16

Estrutura da Lista Usando Array

• Os itens são armazenados em um array de tamanho suficiente para armazenar a lista.

• O campo Último aponta para a posição seguinte à do último elemento da lista.

• O i-ésimo item da lista está armazenado na (i-1)-ésima posição do array, 0≤i<Último.

• A constante MaxTam define o tamanho máximo permitido para a lista.

Page 17: Aula T-09 – BCC202 Listas (Parte 1) Túlio Toffolo decom.ufop.br/toffolo

17/17

Estrutura da Lista Usando Array

#include <sys/time.h>#include <stdio.h>#include <stdlib.h>#define InicioArranjo 0#define MaxTam 1000

typedef int TChave;typedef int Apontador;

typedef struct { TChave Chave; /* outros componentes */} TItem;

typedef struct { TItem Item[MaxTam]; Apontador Primeiro, Ultimo;} TLista;

Page 18: Aula T-09 – BCC202 Listas (Parte 1) Túlio Toffolo decom.ufop.br/toffolo

18/18

Estrutura da Lista Usando Array

void FLVazia(TLista *pLista){ pLista->Primeiro = InicioArranjo; pLista->Ultimo = pLista->Primeiro;} /* FLVazia */

int LEhVazia(TLista* pLista){ return (pLista->Ultimo == pLista->Primeiro);} /* LEhVazia */

int LInsere(TLista* pLista, TItem x){ if (pLista->Ultimo == MaxTam) return 0; /* lista cheia */ pLista->Item[pLista->Ultimo++] = x; return 1;} /* LInsere */

Page 19: Aula T-09 – BCC202 Listas (Parte 1) Túlio Toffolo decom.ufop.br/toffolo

19/19

Estrutura da Lista Usando Array

int LRetira(TLista* pLista, Apontador p, TItem *pX){ if (LEhVazia(pLista) || p >= pLista->Ultimo) return 0;

int cont; *pX = pLista->Item[p]; pLista->Ultimo--; for (cont = p+1; cont <= pLista->Ultimo; cont++) pLista->Item[cont - 1] = pLista->Item[cont]; return 1;} /* LRetira */

Page 20: Aula T-09 – BCC202 Listas (Parte 1) Túlio Toffolo decom.ufop.br/toffolo

20/20

Estrutura da Lista Usando Array

void LImprime(TLista* pLista){ int i; for (i = pLista->Primeiro; i < pLista->Ultimo; i++) printf("%d\n", pLista->Item[i].Chave);} /* LImprime */

Page 21: Aula T-09 – BCC202 Listas (Parte 1) Túlio Toffolo decom.ufop.br/toffolo

21/21

Vantagens de Listas que usam Arrays

• Economia de memória (os apontadores são implícitos nesta estrutura).

• Acesso a qualquer elemento da lista é feito em tempo O(1).

Page 22: Aula T-09 – BCC202 Listas (Parte 1) Túlio Toffolo decom.ufop.br/toffolo

22/22

Desvantagens de Listas que usam Arrays

• 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.

Page 23: Aula T-09 – BCC202 Listas (Parte 1) Túlio Toffolo decom.ufop.br/toffolo

23/23

Exercícios

• Implementar na TAD Lista as funções:

• Concatenar/intercalar (Merge)• Dividir uma lista em várias• Copiar uma lista• Ordenar (sort) por ordem

crescente/decrescente• Pesquisar/Localizar/Buscar (search)