39
Profº Carlos Alberto Teixeira Batista E-mail: [email protected] [email protected] Estruturas de Dados

Estruturas de Dados - alged.webnode.com · Uma Lista Linear (LL) é uma sequência de nós • Nós - elementos do mesmo tipo • Relação de ordem linear (ou total) Lista Linear

Embed Size (px)

Citation preview

Page 1: Estruturas de Dados - alged.webnode.com · Uma Lista Linear (LL) é uma sequência de nós • Nós - elementos do mesmo tipo • Relação de ordem linear (ou total) Lista Linear

Profº Carlos Alberto Teixeira Batista

E-mail: [email protected]

[email protected]

Estruturas de Dados

Page 2: Estruturas de Dados - alged.webnode.com · Uma Lista Linear (LL) é uma sequência de nós • Nós - elementos do mesmo tipo • Relação de ordem linear (ou total) Lista Linear

Lista Linear

São estruturas formadas por um conjunto de dados de

forma a preservar a relação de ordem linear entre eles;

As formas de Representação são:

Lista Sequencial

Lista Encadeada

Page 3: Estruturas de Dados - alged.webnode.com · Uma Lista Linear (LL) é uma sequência de nós • Nós - elementos do mesmo tipo • Relação de ordem linear (ou total) Lista Linear

Uma Lista Linear (LL) é uma sequência de nós

• Nós - elementos do mesmo tipo

• Relação de ordem linear (ou total)

Lista Linear

Fonte: EDELWEISS, N.; GALANTE, R. Estruturas de Dados. Porto Alegre: Bookman, 2009.

Page 4: Estruturas de Dados - alged.webnode.com · Uma Lista Linear (LL) é uma sequência de nós • Nós - elementos do mesmo tipo • Relação de ordem linear (ou total) Lista Linear

a b c d e

Primeiro nó Último nó

Segundo nó

Lista linear

Fonte: EDELWEISS, N.; GALANTE, R. Estruturas de Dados. Porto Alegre: Bookman, 2009.

Page 5: Estruturas de Dados - alged.webnode.com · Uma Lista Linear (LL) é uma sequência de nós • Nós - elementos do mesmo tipo • Relação de ordem linear (ou total) Lista Linear

• Estrutura interna é abstraída

• Pode ter uma complexidade arbitrária

• Enfatizado o conjunto de relações existente

z a c b

INFORMAÇÕES

Número RG Nome Nasc. Cargo

d

Estrutura dos nós

Lista linear

Fonte: EDELWEISS, N.; GALANTE, R. Estruturas de Dados. Porto Alegre: Bookman, 2009.

Page 6: Estruturas de Dados - alged.webnode.com · Uma Lista Linear (LL) é uma sequência de nós • Nós - elementos do mesmo tipo • Relação de ordem linear (ou total) Lista Linear

Uma lista linear é uma coleção de n ≥ 0 nós x1, x2, ... , xn, todos do

mesmo tipo, cujas propriedades estruturais relevantes envolvem apenas

as posições relativas lineares entre nós:

n = 0 : lista vazia, apresenta zero nós

n > 0 : x1 é o primeiro nó, xn é o último nó

1 < k < n : xk é precedido por xk-1 e sucedido por xk+1

• Lista linear : sequência de 0 ou mais nós do mesmo tipo

Definição formal

Lista linear

Fonte: EDELWEISS, N.; GALANTE, R. Estruturas de Dados. Porto Alegre: Bookman, 2009.

Page 7: Estruturas de Dados - alged.webnode.com · Uma Lista Linear (LL) é uma sequência de nós • Nós - elementos do mesmo tipo • Relação de ordem linear (ou total) Lista Linear

• Notas de alunos

• Cadastro de funcionários de uma empresa

• Itens em estoque em uma empresa

• Dias da semana

• Vagões de um trem

• Letras de uma palavra

• Pessoas esperando ônibus

• Cartas de baralho

• Precipitações pluviométricas em um mês/dia

Exemplos de aplicações com listas

Lista linear

Fonte: EDELWEISS, N.; GALANTE, R. Estruturas de Dados. Porto Alegre: Bookman, 2009.

Page 8: Estruturas de Dados - alged.webnode.com · Uma Lista Linear (LL) é uma sequência de nós • Nós - elementos do mesmo tipo • Relação de ordem linear (ou total) Lista Linear

Operações sobre listas lineares

• Criação de uma lista

• Inserção de um nó

• Exclusão de um nó

• Acesso a um nó

• Impressão de uma lista

Operações básicas:

Lista linear

Fonte: EDELWEISS, N.; GALANTE, R. Estruturas de Dados. Porto Alegre: Bookman, 2009.

Page 9: Estruturas de Dados - alged.webnode.com · Uma Lista Linear (LL) é uma sequência de nós • Nós - elementos do mesmo tipo • Relação de ordem linear (ou total) Lista Linear

• Contiguidade física (sequencial)

• Encadeamento

Representação física das relações existentes entre os nós e

não aquelas internas a eles

Representação física de uma lista linear

Lista linear

Fonte: EDELWEISS, N.; GALANTE, R. Estruturas de Dados. Porto Alegre: Bookman, 2009.

Page 10: Estruturas de Dados - alged.webnode.com · Uma Lista Linear (LL) é uma sequência de nós • Nós - elementos do mesmo tipo • Relação de ordem linear (ou total) Lista Linear

Lista Seqüencial

Explora a seqüencialidade da memória do computador, de

tal forma que os nós de uma lista sejam armazenados em

endereços seqüenciais;

Pode ser representado por um vetor na memória principal

ou um arquivo seqüencial em disco.

Page 11: Estruturas de Dados - alged.webnode.com · Uma Lista Linear (LL) é uma sequência de nós • Nós - elementos do mesmo tipo • Relação de ordem linear (ou total) Lista Linear

Lista Encadeada Esta estrutura é tida como uma seqüência de elementos

encadeados por ponteiros;

Cada elemento deve conter, além do dado propriamente dito,

uma referência para o próximo elemento da lista.

Page 12: Estruturas de Dados - alged.webnode.com · Uma Lista Linear (LL) é uma sequência de nós • Nós - elementos do mesmo tipo • Relação de ordem linear (ou total) Lista Linear

Lista Seqüencial Uma lista representada de forma seqüencial é um conjunto

de registros onde estão estabelecidas regras de precedência

entre seus elementos;

O sucessor de um elemento ocupa posição física

subseqüente.

A implementação de operações pode ser feita utilizando array

e registro, associando o elemento a(i) com o índice i

(mapeamento seqüencial).

Page 13: Estruturas de Dados - alged.webnode.com · Uma Lista Linear (LL) é uma sequência de nós • Nós - elementos do mesmo tipo • Relação de ordem linear (ou total) Lista Linear

Lista Seqüencial CARACTERÍSTICAS

Os elementos na lista estão armazenados fisicamente em

posições consecutivas;

A inserção de um elemento na posição a(i) causa o

deslocamento a direita do elemento de a(i) ao último;

A eliminação do elemento a(i) requer o deslocamento à

esquerda do a(i+1) ao último;

Page 14: Estruturas de Dados - alged.webnode.com · Uma Lista Linear (LL) é uma sequência de nós • Nós - elementos do mesmo tipo • Relação de ordem linear (ou total) Lista Linear

Implementação de LL através de contiguidade física

• Utiliza a sequencialidade da memória para representar a

ordem entre os nós

• Endereços fisicamente adjacentes, nós logicamente

adjacentes

LL – contiguidade física

Lista Seqüencial

Fonte: EDELWEISS, N.; GALANTE, R. Estruturas de Dados. Porto Alegre: Bookman, 2009.

Page 15: Estruturas de Dados - alged.webnode.com · Uma Lista Linear (LL) é uma sequência de nós • Nós - elementos do mesmo tipo • Relação de ordem linear (ou total) Lista Linear

L2 L1 L3 L4 L5 L6

L1 L2 L3 L4 L5 L6

1 2 3 4 5 6

L L

Lista

linear

Arranjo

LL – contiguidade física

Implementação de LL sobre arranjo de 1 dimensão

Lista Seqüencial

Fonte: EDELWEISS, N.; GALANTE, R. Estruturas de Dados. Porto Alegre: Bookman, 2009.

Page 16: Estruturas de Dados - alged.webnode.com · Uma Lista Linear (LL) é uma sequência de nós • Nós - elementos do mesmo tipo • Relação de ordem linear (ou total) Lista Linear

Características

Todos os elementos do arranjo tem tipo igual

Cada elemento do arranjo é um nó

Tipo do nó = tipo do elemento do arranjo

Posição no arranjo representa posição na LL

Acesso direto aos nós

Natureza dinâmica – inserção / remoção de nodos

Comprimento varia durante aplicação

LL – contiguidade física

L2 L1 L3 L4 L5 L6

L1 L2 L3 L4 L5 L6

1 2 3 4 5 6

L L

Lista Seqüencial

Fonte: EDELWEISS, N.; GALANTE, R. Estruturas de Dados. Porto Alegre: Bookman, 2009.

Page 17: Estruturas de Dados - alged.webnode.com · Uma Lista Linear (LL) é uma sequência de nós • Nós - elementos do mesmo tipo • Relação de ordem linear (ou total) Lista Linear

TipoNodo = registro

Nome: string

Código: inteiro

Valor: real

fim registro

TipoLista = arranjo [1 .. N] de TipoNodo

Tipos de dados

Tipos de dados utilizados nos algoritmos para

LL implementada com contiguidade física:

LL – contiguidade física

Lista Seqüencial

Fonte: EDELWEISS, N.; GALANTE, R. Estruturas de Dados. Porto Alegre: Bookman, 2009.

Page 18: Estruturas de Dados - alged.webnode.com · Uma Lista Linear (LL) é uma sequência de nós • Nós - elementos do mesmo tipo • Relação de ordem linear (ou total) Lista Linear

Lista Seqüencial - inserção

10 20 30 40 50

1 2 3 4 5 6 7 8 9 10

25

A inserção de um elemento na posição a(i) causa o

deslocamento a direita do elemento de a(i) ao último;

Page 19: Estruturas de Dados - alged.webnode.com · Uma Lista Linear (LL) é uma sequência de nós • Nós - elementos do mesmo tipo • Relação de ordem linear (ou total) Lista Linear

Lista Seqüencial - inserção

10 20 30 40 50

1 2 3 4 5 6 7 8 9 10

25

A inserção de um elemento na posição a(i) causa o

deslocamento a direita do elemento de a(i) ao último;

Page 20: Estruturas de Dados - alged.webnode.com · Uma Lista Linear (LL) é uma sequência de nós • Nós - elementos do mesmo tipo • Relação de ordem linear (ou total) Lista Linear

Lista Seqüencial - inserção

10 20 30 40 50

1 2 3 4 5 6 7 8 9 10

25

A inserção de um elemento na posição a(i) causa o

deslocamento a direita do elemento de a(i) ao último;

Page 21: Estruturas de Dados - alged.webnode.com · Uma Lista Linear (LL) é uma sequência de nós • Nós - elementos do mesmo tipo • Relação de ordem linear (ou total) Lista Linear

Lista Seqüencial - inserção

10 20 30 40 50

1 2 3 4 5 6 7 8 9 10

25

A inserção de um elemento na posição a(i) causa o

deslocamento a direita do elemento de a(i) ao último;

Page 22: Estruturas de Dados - alged.webnode.com · Uma Lista Linear (LL) é uma sequência de nós • Nós - elementos do mesmo tipo • Relação de ordem linear (ou total) Lista Linear

Lista Seqüencial - inserção

10 20 25 30 40 50

1 2 3 4 5 6 7 8 9 10

A inserção de um elemento na posição a(i) causa o

deslocamento a direita do elemento de a(i) ao último;

Page 23: Estruturas de Dados - alged.webnode.com · Uma Lista Linear (LL) é uma sequência de nós • Nós - elementos do mesmo tipo • Relação de ordem linear (ou total) Lista Linear

Lista Seqüencial - remoção

10 20 25 30 40 50

1 2 3 4 5 6 7 8 9 10

Remover (20)

A eliminação do elemento a(i) requer o deslocamento à

esquerda do a(i+1) ao último.

Page 24: Estruturas de Dados - alged.webnode.com · Uma Lista Linear (LL) é uma sequência de nós • Nós - elementos do mesmo tipo • Relação de ordem linear (ou total) Lista Linear

Lista Seqüencial - remoção

10 25 30 40 50

1 2 3 4 5 6 7 8 9 10

A eliminação do elemento a(i) requer o deslocamento à

esquerda do a(i+1) ao último.

Page 25: Estruturas de Dados - alged.webnode.com · Uma Lista Linear (LL) é uma sequência de nós • Nós - elementos do mesmo tipo • Relação de ordem linear (ou total) Lista Linear

Lista Seqüencial - remoção

10 25 30 40 50

1 2 3 4 5 6 7 8 9 10

A eliminação do elemento a(i) requer o deslocamento à

esquerda do a(i+1) ao último.

Page 26: Estruturas de Dados - alged.webnode.com · Uma Lista Linear (LL) é uma sequência de nós • Nós - elementos do mesmo tipo • Relação de ordem linear (ou total) Lista Linear

Lista Seqüencial - remoção

10 25 30 40 50

1 2 3 4 5 6 7 8 9 10

A eliminação do elemento a(i) requer o deslocamento à

esquerda do a(i+1) ao último.

Page 27: Estruturas de Dados - alged.webnode.com · Uma Lista Linear (LL) é uma sequência de nós • Nós - elementos do mesmo tipo • Relação de ordem linear (ou total) Lista Linear

Lista Seqüencial - remoção

10 25 30 40 50

1 2 3 4 5 6 7 8 9 10

A eliminação do elemento a(i) requer o deslocamento à

esquerda do a(i+1) ao último.

Page 28: Estruturas de Dados - alged.webnode.com · Uma Lista Linear (LL) é uma sequência de nós • Nós - elementos do mesmo tipo • Relação de ordem linear (ou total) Lista Linear

Lista Seqüencial - remoção

10 25 30 40 50

1 2 3 4 5 6 7 8 9 10

A eliminação do elemento a(i) requer o deslocamento à

esquerda do a(i+1) ao último.

Page 29: Estruturas de Dados - alged.webnode.com · Uma Lista Linear (LL) é uma sequência de nós • Nós - elementos do mesmo tipo • Relação de ordem linear (ou total) Lista Linear

Lista Seqüencial Vantagens:

Acesso direto indexado a qualquer elemento da lista

Tempo constante para acessar o elemento i - dependerá somente do índice.

Desvantagem:

Movimentação quando eliminado/inserido elemento

Tamanho máximo pré-estimado

Page 30: Estruturas de Dados - alged.webnode.com · Uma Lista Linear (LL) é uma sequência de nós • Nós - elementos do mesmo tipo • Relação de ordem linear (ou total) Lista Linear

Lista Seqüencial

Quando usar:

Listas pequenas

Inserção/remoção no fim da lista

Tamanho máximo bem definido

Page 31: Estruturas de Dados - alged.webnode.com · Uma Lista Linear (LL) é uma sequência de nós • Nós - elementos do mesmo tipo • Relação de ordem linear (ou total) Lista Linear

Lista Sequencial As propriedades estruturadas da lista permitem responder a

questões como:

Se uma lista está vazia

Se uma lista está cheia

Quantos elementos existem na lista

Qual é o elemento de uma determinada posição

Qual a posição de um determinado elemento

Inserir um elemento na lista

Eliminar um elemento da lista

Page 32: Estruturas de Dados - alged.webnode.com · Uma Lista Linear (LL) é uma sequência de nós • Nós - elementos do mesmo tipo • Relação de ordem linear (ou total) Lista Linear

Interface do tipo lista sequencial

A interface é representada pelo arquivo “lstSeq.h”:

Page 33: Estruturas de Dados - alged.webnode.com · Uma Lista Linear (LL) é uma sequência de nós • Nós - elementos do mesmo tipo • Relação de ordem linear (ou total) Lista Linear

Implementação da lista sequencial

A implementação é representada pelo arquivo “lstSeq.c”:

Page 34: Estruturas de Dados - alged.webnode.com · Uma Lista Linear (LL) é uma sequência de nós • Nós - elementos do mesmo tipo • Relação de ordem linear (ou total) Lista Linear

Implementação da lista sequencial

A implementação é representada pelo arquivo “lstSeq.c”:

Page 35: Estruturas de Dados - alged.webnode.com · Uma Lista Linear (LL) é uma sequência de nós • Nós - elementos do mesmo tipo • Relação de ordem linear (ou total) Lista Linear

Implementação da lista sequencial

A implementação é representada pelo arquivo “lstSeq.c”:

Page 36: Estruturas de Dados - alged.webnode.com · Uma Lista Linear (LL) é uma sequência de nós • Nós - elementos do mesmo tipo • Relação de ordem linear (ou total) Lista Linear

Implementação da lista sequencial

A implementação é representada pelo arquivo “lstSeq.c”:

Page 37: Estruturas de Dados - alged.webnode.com · Uma Lista Linear (LL) é uma sequência de nós • Nós - elementos do mesmo tipo • Relação de ordem linear (ou total) Lista Linear

Implementação da lista sequencial

A implementação é representada pelo arquivo “lstSeq.c”:

Page 38: Estruturas de Dados - alged.webnode.com · Uma Lista Linear (LL) é uma sequência de nós • Nós - elementos do mesmo tipo • Relação de ordem linear (ou total) Lista Linear

Implementação da lista sequencial

Exemplo de utilização do tipo lista: “main.c”:

Page 39: Estruturas de Dados - alged.webnode.com · Uma Lista Linear (LL) é uma sequência de nós • Nós - elementos do mesmo tipo • Relação de ordem linear (ou total) Lista Linear

EXERCÍCIOS Acrescente ao TDA Lista as operações abaixo e implemente-

as:

Procedimento que informe quantos elementos existem na lista;

Uma função que retorna o elemento de uma dada posição;

Uma função que retorna a posição de um dado elemento;

Um procedimento que esvazie a lista.