estruturas de dados - alged.webnode.com · uma lista linear (ll) é uma sequência de nós • nós...
TRANSCRIPT
![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](https://reader030.vdocuments.pub/reader030/viewer/2022021721/5be5d23d09d3f2c44d8ca2d4/html5/thumbnails/2.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022021721/5be5d23d09d3f2c44d8ca2d4/html5/thumbnails/3.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022021721/5be5d23d09d3f2c44d8ca2d4/html5/thumbnails/4.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022021721/5be5d23d09d3f2c44d8ca2d4/html5/thumbnails/5.jpg)
• 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](https://reader030.vdocuments.pub/reader030/viewer/2022021721/5be5d23d09d3f2c44d8ca2d4/html5/thumbnails/6.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022021721/5be5d23d09d3f2c44d8ca2d4/html5/thumbnails/7.jpg)
• 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](https://reader030.vdocuments.pub/reader030/viewer/2022021721/5be5d23d09d3f2c44d8ca2d4/html5/thumbnails/8.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022021721/5be5d23d09d3f2c44d8ca2d4/html5/thumbnails/9.jpg)
• 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](https://reader030.vdocuments.pub/reader030/viewer/2022021721/5be5d23d09d3f2c44d8ca2d4/html5/thumbnails/10.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022021721/5be5d23d09d3f2c44d8ca2d4/html5/thumbnails/11.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022021721/5be5d23d09d3f2c44d8ca2d4/html5/thumbnails/12.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022021721/5be5d23d09d3f2c44d8ca2d4/html5/thumbnails/13.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022021721/5be5d23d09d3f2c44d8ca2d4/html5/thumbnails/14.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022021721/5be5d23d09d3f2c44d8ca2d4/html5/thumbnails/15.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022021721/5be5d23d09d3f2c44d8ca2d4/html5/thumbnails/16.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022021721/5be5d23d09d3f2c44d8ca2d4/html5/thumbnails/17.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022021721/5be5d23d09d3f2c44d8ca2d4/html5/thumbnails/18.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022021721/5be5d23d09d3f2c44d8ca2d4/html5/thumbnails/19.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022021721/5be5d23d09d3f2c44d8ca2d4/html5/thumbnails/20.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022021721/5be5d23d09d3f2c44d8ca2d4/html5/thumbnails/21.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022021721/5be5d23d09d3f2c44d8ca2d4/html5/thumbnails/22.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022021721/5be5d23d09d3f2c44d8ca2d4/html5/thumbnails/23.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022021721/5be5d23d09d3f2c44d8ca2d4/html5/thumbnails/24.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022021721/5be5d23d09d3f2c44d8ca2d4/html5/thumbnails/25.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022021721/5be5d23d09d3f2c44d8ca2d4/html5/thumbnails/26.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022021721/5be5d23d09d3f2c44d8ca2d4/html5/thumbnails/27.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022021721/5be5d23d09d3f2c44d8ca2d4/html5/thumbnails/28.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022021721/5be5d23d09d3f2c44d8ca2d4/html5/thumbnails/29.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022021721/5be5d23d09d3f2c44d8ca2d4/html5/thumbnails/30.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022021721/5be5d23d09d3f2c44d8ca2d4/html5/thumbnails/31.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022021721/5be5d23d09d3f2c44d8ca2d4/html5/thumbnails/32.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022021721/5be5d23d09d3f2c44d8ca2d4/html5/thumbnails/33.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022021721/5be5d23d09d3f2c44d8ca2d4/html5/thumbnails/34.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022021721/5be5d23d09d3f2c44d8ca2d4/html5/thumbnails/35.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022021721/5be5d23d09d3f2c44d8ca2d4/html5/thumbnails/36.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022021721/5be5d23d09d3f2c44d8ca2d4/html5/thumbnails/37.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022021721/5be5d23d09d3f2c44d8ca2d4/html5/thumbnails/38.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022021721/5be5d23d09d3f2c44d8ca2d4/html5/thumbnails/39.jpg)
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.