aula estrutura de dados - tad - listas - 1

40
[email protected] Roteiro Dados Simples e Compostos Tipo Abstrato de Dados (TAD)  Ex: Ponto em R 2 Ex: Números racionais Listas (Conceituação) Listas Encadeadas O TAD de uma Lista Encadeada Ex: Implementação na linguagem C

Upload: filipe-ribeiro

Post on 24-Jun-2015

1.476 views

Category:

Education


2 download

DESCRIPTION

Estrutura de Dados aula 2

TRANSCRIPT

Page 1: Aula Estrutura de Dados - TAD - listas - 1

[email protected]

Roteiro Dados Simples e Compostos Tipo Abstrato de Dados (TAD) 

Ex: Ponto em R2

Ex: Números racionais Listas (Conceituação)

Listas Encadeadas O TAD de uma Lista Encadeada

Ex: Implementação na linguagem C

Page 2: Aula Estrutura de Dados - TAD - listas - 1

[email protected]

Dados Simples

Referência a um elemento, com domínio e conjunto de operações pré­definido

●  Dados numéricos (e.g. inteiro, real)●  Dados simbólicos (e.g. caracteres)

Page 3: Aula Estrutura de Dados - TAD - listas - 1

[email protected]

Dados Compostos 

Referência a um conjunto de elementos com domínio e conjunto de operações a ser estabelecido

● Homogêneos (e.g. vetor, matriz, cadeia decaracteres (“string”))

● Não necessariamente homogêneo (e.g. Estrutura)● Conjuntos, formas de inclusão, acesso,

organização, algoritmos eficientes para uso emconjuntos e organizações diversas. (e.g.Sequências, prioridade, hierárquicos, fluxos)

Page 4: Aula Estrutura de Dados - TAD - listas - 1

[email protected]

Tipo Abstrato de Dados (TAD)● Modelo Matemático● Implementa em um conjunto de elementos:–  Operações específicas–  Semântica Especial– A implementação usa as estruturas básicas de uma 

linguagem de programação formando uma nova estrutura

●  Abstrai detalhes após implementação, ou seja, realiza um encapsulamento do modelo matemático

Page 5: Aula Estrutura de Dados - TAD - listas - 1

[email protected]

Exemplos de Modelos matemáticos que poderiam ser implementados como TADs

● ponto, segmento de reta, círculo, númerosracionais, números complexos

Page 6: Aula Estrutura de Dados - TAD - listas - 1

[email protected]

Ex: Construindo um TAD para ponto (Celes, W.; Cerqueira, R. & Rangel, J.L.   Introdução a Estruturas de Dados, Campus, RJ, 2004.)

Page 8: Aula Estrutura de Dados - TAD - listas - 1

[email protected]

Ex: cont. em um arquivo ponto.c

Page 9: Aula Estrutura de Dados - TAD - listas - 1

[email protected]

Ex: cont. em um arquivo ponto.c

Page 10: Aula Estrutura de Dados - TAD - listas - 1

[email protected]

Exemplo: números racionais

Page 11: Aula Estrutura de Dados - TAD - listas - 1

[email protected]

Exemplo em C

Page 12: Aula Estrutura de Dados - TAD - listas - 1

[email protected]

Exemplo em C

Page 13: Aula Estrutura de Dados - TAD - listas - 1

[email protected]

Exemplo em C

Page 14: Aula Estrutura de Dados - TAD - listas - 1

[email protected]

Trabalhando com Conjuntos

Page 15: Aula Estrutura de Dados - TAD - listas - 1

[email protected]

Listas● Uma lista é uma estrutura flexível que pode 

aumentar ou diminuir seu tamanho sob demanda● Elementos podem ser acessados, inseridos, 

apagados, em qualquer posição da lista● Listas podem ser concatenadas ou repartidas em 

sub­listas

Page 16: Aula Estrutura de Dados - TAD - listas - 1

[email protected]

Listas● Matematicamente uma lista é uma sequência de 

0 ou mais elementos de um tipo específico

● O número n de elementos da lista é o seu tamanho

● n sendo igual a 0 (zero) temos uma lista vazia

● Uma posição após o último elemento da lista é referido como o fim da lista

Page 17: Aula Estrutura de Dados - TAD - listas - 1

[email protected]

Como formar um TAD de Listas?● Definições de uma lista?● Qual o conjunto básico de operações de uma lista?– Inserir (x, p, L): inserir x na posição p da lista L – Deletar (p, L): deletar o elemento na posição p da lista L– ListaVazia(L): criar lista vazia

● outras operações?– Localizar (x, L)– Posterior (p, L), Anterior(p, L)– Primeiro (L)– ImprimirLista (L)

Page 18: Aula Estrutura de Dados - TAD - listas - 1

[email protected]

Lista Encadeada, ou Ligada

Page 19: Aula Estrutura de Dados - TAD - listas - 1

[email protected]

Lista Encadeada, ou Ligada

Page 20: Aula Estrutura de Dados - TAD - listas - 1

[email protected]

Representação de Listas Encadedas

Page 21: Aula Estrutura de Dados - TAD - listas - 1

[email protected]

Listas com Cabeça, e sem Cabeça● Com Cabeça: o conteúdo da primeira célula é 

irrelevante, serve apenas para marcar o início da lista. A primeira célula é a cabeça da lista.

● Sem Cabeça: o conteúdo da primeira célula é tão relevante quanto das demais (* Usada aqui)

Page 22: Aula Estrutura de Dados - TAD - listas - 1

[email protected]

Criando Listas Vazias

Page 23: Aula Estrutura de Dados - TAD - listas - 1

[email protected]

Inserindo elementos em uma lista● No começo da Lista

Page 24: Aula Estrutura de Dados - TAD - listas - 1

[email protected]

Inserindo elementos em uma lista

Page 25: Aula Estrutura de Dados - TAD - listas - 1

[email protected]

Inserindo elementos em lista

Page 26: Aula Estrutura de Dados - TAD - listas - 1

[email protected]

Impressão de listas 

Page 27: Aula Estrutura de Dados - TAD - listas - 1

[email protected]

Verificar se lista está vazia

Page 28: Aula Estrutura de Dados - TAD - listas - 1

[email protected]

Busca de elemento em listas

Page 29: Aula Estrutura de Dados - TAD - listas - 1

[email protected]

Removendo elementos de listas 

Page 30: Aula Estrutura de Dados - TAD - listas - 1

[email protected]

Removendo elementos de listas

Page 31: Aula Estrutura de Dados - TAD - listas - 1

[email protected]

Liberando listas encadeadas

Page 32: Aula Estrutura de Dados - TAD - listas - 1

[email protected]

Comparação de listas encadeadas

Page 33: Aula Estrutura de Dados - TAD - listas - 1

[email protected]

Exemplos: listas de inteiros

Page 34: Aula Estrutura de Dados - TAD - listas - 1

[email protected]

Exemplos: listas de inteiros

Page 35: Aula Estrutura de Dados - TAD - listas - 1

[email protected]

Implementação Recursiva de Listas

Page 36: Aula Estrutura de Dados - TAD - listas - 1

[email protected]

Implementação Recursiva de Listas

Page 37: Aula Estrutura de Dados - TAD - listas - 1

[email protected]

Implementação Recursiva de Listas

Page 38: Aula Estrutura de Dados - TAD - listas - 1

[email protected]

Implementação Recursiva de Listas

Page 39: Aula Estrutura de Dados - TAD - listas - 1

[email protected]

Implementação Recursiva de Listas

Page 40: Aula Estrutura de Dados - TAD - listas - 1

[email protected]

Exercícios● Escreva uma função que receba uma lista 

encadeada e devolva o endereço de um nó que esteja o mais próximo possível do meio da lista. Faça isso sem contar explicitamente o número de nós da lista. 

● Escreva uma função que encontre uma célula de conteúdo mínimo. Faça duas versões: uma iterativa e uma recursiva. 

● Escreva uma função que copie um vetor para uma lista encadeada. Faça duas versões: uma iterativa e uma recursiva.