listas lineares - foz.unioeste.br

45
Introdução TAD Lista Linear Implementação Tipos de Representação Referências Listas Lineares Huei Diana Lee Ana Paula Martins Fabiana Frata Furlan Peres Algoritmos e Estruturas de Dados 2007

Upload: others

Post on 11-Jul-2022

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Listas Lineares - foz.unioeste.br

Introdução TAD Lista Linear Implementação Tipos de Representação Referências

Listas Lineares

Huei Diana LeeAna Paula Martins

Fabiana Frata Furlan Peres

Algoritmos e Estruturas de Dados

2007

Page 2: Listas Lineares - foz.unioeste.br

Introdução TAD Lista Linear Implementação Tipos de Representação Referências

Conteúdo

Introdução

TAD Lista Linear

Implementação

Tipos de RepresentaçãoAlocação SeqüencialAlocação Encadeada

Referências

Page 3: Listas Lineares - foz.unioeste.br

Introdução TAD Lista Linear Implementação Tipos de Representação Referências

Definição de Lista Linear

Uma Lista Linear é definida como umacoleção de dados de um mesmo tipo.

Page 4: Listas Lineares - foz.unioeste.br

Introdução TAD Lista Linear Implementação Tipos de Representação Referências

Uma Lista Linear pode ser...

I Seqüência de zero ou mais ítens x1, x2,..,xn,na qual xi é de um determinado tipo e nrepresenta o tamanho da lista linear;

I Sua principal propriedade estrutural envolveas posições relativas dos ítens em umadimensão:

I Assumindo n ≥ 1, x1 é o primeiro item da lista e xn é oúltimo item da lista;

I xi precede xi+1 para i = 1, 2.., n − 1;I xi sucede xi−1 para i = 2, 3, .., n;I o elemento xi é dito estar na i-ésima posição da lista.

Page 5: Listas Lineares - foz.unioeste.br

Introdução TAD Lista Linear Implementação Tipos de Representação Referências

Principais Operações

I Inserção;

I Eliminação;

I Busca (acesso).

As restrições sobre as operações determinamdiferentes tipos de listas:

I Pilhas;

I Filas;

I Filas Duplas entre outras.

Page 6: Listas Lineares - foz.unioeste.br

Introdução TAD Lista Linear Implementação Tipos de Representação Referências

Principais Operações

I Inserção;

I Eliminação;

I Busca (acesso).

As restrições sobre as operações determinamdiferentes tipos de listas:

I Pilhas;

I Filas;

I Filas Duplas entre outras.

Page 7: Listas Lineares - foz.unioeste.br

Introdução TAD Lista Linear Implementação Tipos de Representação Referências

Algumas aplicações...

I Manipulação simbólica;

I Gerência de memória;

I Simulação;

I Compiladores.

Page 8: Listas Lineares - foz.unioeste.br

Introdução TAD Lista Linear Implementação Tipos de Representação Referências

TAD Lista Linear I

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

Um conjunto de operações necessário a uma maioria deaplicações é:

1. Criar uma lista linear vazia;2. Inserir um novo item imediatamente após o i-ésimo

item;3. Retirar o i-ésimo item;

Page 9: Listas Lineares - foz.unioeste.br

Introdução TAD Lista Linear Implementação Tipos de Representação Referências

TAD Lista Linear II4. Localizar o i-ésimo item para examinar e/ou alterar o

conteúdo de seus componentes;5. Combinar duas ou mais listas lineares em uma lista

única;6. Partir uma lista linear em duas ou mais listas;7. Fazer uma cópia da lista linear;8. Ordenar os ítens da lista em ordem ascendente ou

descendente, de acordo com alguns de seuscomponentes;

9. Pesquisar a ocorrência de um item com um valorparticular em algum componente.

Page 10: Listas Lineares - foz.unioeste.br

Introdução TAD Lista Linear Implementação Tipos de Representação Referências

Implementação I

I Várias estruturas de dados podem serusadas para representar listas lineares,cada uma com vantagens e desvantagensparticulares;

I As duas representações mais utilizadas sãoas implementações por meio de alocaçãoseqüencial (matrizes/arranjos) e dealocação encadeada (apontadores).

Page 11: Listas Lineares - foz.unioeste.br

Introdução TAD Lista Linear Implementação Tipos de Representação Referências

Implementação IIExemplo de Conjunto de Operações:

1. FLVazia(Lista). Faz a lista ficar vazia;2. Insere(x, Lista). Insere x após o último item da lista;3. Retira(p, Lista, x). Retorna o item x que está na

posição p da lista, retirando-o da lista e deslocandoos itens a partir da posição p+1 para as posiçõesanteriores;

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

5. Imprime(Lista). Imprime os itens da lista na ordem deocorrência.

Page 12: Listas Lineares - foz.unioeste.br

Introdução TAD Lista Linear Implementação Tipos de Representação Referências

Alocação Seqüencial

Alocação SeqüencialI Os itens da lista são armazenados em posições

contíguas de memória;

I A lista pode ser percorrida em qualquer direção;

I A inserção de um novo item pode ser realizada apóso último item com custo constante;

I A inserção de um novo item no meio da lista requerum deslocamento de todos os itens localizados apóso ponto de inserção;

I Retirar um item do início da lista requer umdeslocamento de itens para preencher o espaçodeixado vazio.

Page 13: Listas Lineares - foz.unioeste.br

Introdução TAD Lista Linear Implementação Tipos de Representação Referências

Alocação Seqüencial

Alocação Seqüencial

...

xn

...

x2

x1

ItensPrimeiro = 1

2

Último−1

MaxTam

Page 14: Listas Lineares - foz.unioeste.br

Introdução TAD Lista Linear Implementação Tipos de Representação Referências

Alocação Seqüencial

Alocação Seqüencial

I Os ítens são armazenados em um array de tamanhosuficiente para armazenar a lista;

I O campo Último aponta para a posição seguinte a doúltimo elemento da lista;

I O i-ésimo item da lista está armazenado na i-ésimaposição do array, 1 ≤ i < Último;

I A constante MaxTam define o tamanho máximopermitido para a lista.

Page 15: Listas Lineares - foz.unioeste.br

Introdução TAD Lista Linear Implementação Tipos de Representação Referências

Alocação Seqüencial

Operações 1

Projeto de Algoritmos – Cap.3 Estruturas de Dados Básicas – Seção 3.1.1 6

Estrutura da Lista Usando Arranjo

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

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

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

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

const

InicioArranjo = 1;

MaxTam = 1000;

type

TipoChave = integer ;

Apontador = integer ;

TipoItem = record

Chave: TipoChave;

{ outros componentes }

end;

TipoLista = record

Item : array [ 1 . .MaxTam] of TipoItem;

Primeiro : Apontador;

Ultimo : Apontador

end;

Page 16: Listas Lineares - foz.unioeste.br

Introdução TAD Lista Linear Implementação Tipos de Representação Referências

Alocação Seqüencial

Operações 2Projeto de Algoritmos – Cap.3 Estruturas de Dados Básicas – Seção 3.1.1 7

Operações sobre Lista Usando Arranjo

procedure FLVazia (var Lista : TipoLista ) ;

begin

Lista .Primeiro := InicioArranjo ;

Lista .Ultimo := Lista .Primeiro ;

end;

function Vazia (var Lista : TipoLista ) : boolean;

begin

Vazia := Lista .Primeiro = Lista .Ultimo;

end;

procedure Insere (x : TipoItem ; var Lista : TipoLista ) ;

begin

i f Lista .Ultimo > MaxTam

then writeln ( ’ Lista esta cheia ’ )

else begin

Lista . Item[ Lista .Ultimo ] := x;

Lista .Ultimo := Lista .Ultimo + 1;

end;

end;

Page 17: Listas Lineares - foz.unioeste.br

Introdução TAD Lista Linear Implementação Tipos de Representação Referências

Alocação Seqüencial

Operações 3

Projeto de Algoritmos – Cap.3 Estruturas de Dados Básicas – Seção 3.1.1 7

Operações sobre Lista Usando Arranjo

procedure FLVazia (var Lista : TipoLista ) ;

begin

Lista .Primeiro := InicioArranjo ;

Lista .Ultimo := Lista .Primeiro ;

end;

function Vazia (var Lista : TipoLista ) : boolean;

begin

Vazia := Lista .Primeiro = Lista .Ultimo;

end;

procedure Insere (x : TipoItem ; var Lista : TipoLista ) ;

begin

i f Lista .Ultimo > MaxTam

then writeln ( ’ Lista esta cheia ’ )

else begin

Lista . Item[ Lista .Ultimo ] := x;

Lista .Ultimo := Lista .Ultimo + 1;

end;

end;

Page 18: Listas Lineares - foz.unioeste.br

Introdução TAD Lista Linear Implementação Tipos de Representação Referências

Alocação Seqüencial

Operações 4

Projeto de Algoritmos – Cap.3 Estruturas de Dados Básicas – Seção 3.1.1 7

Operações sobre Lista Usando Arranjo

procedure FLVazia (var Lista : TipoLista ) ;

begin

Lista .Primeiro := InicioArranjo ;

Lista .Ultimo := Lista .Primeiro ;

end;

function Vazia (var Lista : TipoLista ) : boolean;

begin

Vazia := Lista .Primeiro = Lista .Ultimo;

end;

procedure Insere (x : TipoItem ; var Lista : TipoLista ) ;

begin

i f Lista .Ultimo > MaxTam

then writeln ( ’ Lista esta cheia ’ )

else begin

Lista . Item[ Lista .Ultimo ] := x;

Lista .Ultimo := Lista .Ultimo + 1;

end;

end;

Page 19: Listas Lineares - foz.unioeste.br

Introdução TAD Lista Linear Implementação Tipos de Representação Referências

Alocação Seqüencial

Quiz...E para inserir um elemento na posição i , onde i ≤Último?

if Último < MaxTam...then begin..........for j := Último + 1 downto i + 1 do..............A[j] := A[j -1];..............A[i] := novovalor;..............Último := Último + 1;........end;...else impossível; Lista cheia

Qual o no de movimentos? Último + 1 - (i)

Page 20: Listas Lineares - foz.unioeste.br

Introdução TAD Lista Linear Implementação Tipos de Representação Referências

Alocação Seqüencial

Quiz...E para inserir um elemento na posição i , onde i ≤Último?

if Último < MaxTam...then begin..........for j := Último + 1 downto i + 1 do..............A[j] := A[j -1];..............A[i] := novovalor;..............Último := Último + 1;........end;...else impossível; Lista cheia

Qual o no de movimentos? Último + 1 - (i)

Page 21: Listas Lineares - foz.unioeste.br

Introdução TAD Lista Linear Implementação Tipos de Representação Referências

Alocação Seqüencial

Quiz...E para inserir um elemento na posição i , onde i ≤Último?

if Último < MaxTam...then begin..........for j := Último + 1 downto i + 1 do..............A[j] := A[j -1];..............A[i] := novovalor;..............Último := Último + 1;........end;...else impossível; Lista cheia

Qual o no de movimentos?

Último + 1 - (i)

Page 22: Listas Lineares - foz.unioeste.br

Introdução TAD Lista Linear Implementação Tipos de Representação Referências

Alocação Seqüencial

Quiz...E para inserir um elemento na posição i , onde i ≤Último?

if Último < MaxTam...then begin..........for j := Último + 1 downto i + 1 do..............A[j] := A[j -1];..............A[i] := novovalor;..............Último := Último + 1;........end;...else impossível; Lista cheia

Qual o no de movimentos? Último + 1 - (i)

Page 23: Listas Lineares - foz.unioeste.br

Introdução TAD Lista Linear Implementação Tipos de Representação Referências

Alocação Seqüencial

Operações 5

Projeto de Algoritmos – Cap.3 Estruturas de Dados Básicas – Seção 3.1.1 8

Operações sobre Lista Usando Arranjo

procedure Retira (p:Apontador ; var Lista : TipoLista ;

var Item:TipoItem) ;

var Aux: integer ;

begin

i f Vazia ( Lista ) or (p >= Lista .Ultimo)

then writeln ( ’Erro : Posicao nao existe ’ )

else begin

Item := Lista . Item[p] ;

Lista .Ultimo := Lista .Ultimo − 1;

for Aux := p to Lista .Ultimo − 1 do

Lista . Item[Aux] := Lista . Item[Aux+1];

end;

end;

procedure Imprime (var Lista : TipoLista ) ;

var Aux: integer ;

begin

for Aux := Lista .Primeiro to Lista .Ultimo − 1 do

writeln ( Lista . Item[Aux] .Chave) ;

end;

Page 24: Listas Lineares - foz.unioeste.br

Introdução TAD Lista Linear Implementação Tipos de Representação Referências

Alocação Seqüencial

Quiz...

Qual o no de movimentos?

Último - p

Page 25: Listas Lineares - foz.unioeste.br

Introdução TAD Lista Linear Implementação Tipos de Representação Referências

Alocação Seqüencial

Quiz...

Qual o no de movimentos? Último - p

Page 26: Listas Lineares - foz.unioeste.br

Introdução TAD Lista Linear Implementação Tipos de Representação Referências

Alocação Seqüencial

Operações 6

Projeto de Algoritmos – Cap.3 Estruturas de Dados Básicas – Seção 3.1.1 8

Operações sobre Lista Usando Arranjo

procedure Retira (p:Apontador ; var Lista : TipoLista ;

var Item:TipoItem) ;

var Aux: integer ;

begin

i f Vazia ( Lista ) or (p >= Lista .Ultimo)

then writeln ( ’Erro : Posicao nao existe ’ )

else begin

Item := Lista . Item[p] ;

Lista .Ultimo := Lista .Ultimo − 1;

for Aux := p to Lista .Ultimo − 1 do

Lista . Item[Aux] := Lista . Item[Aux+1];

end;

end;

procedure Imprime (var Lista : TipoLista ) ;

var Aux: integer ;

begin

for Aux := Lista .Primeiro to Lista .Ultimo − 1 do

writeln ( Lista . Item[Aux] .Chave) ;

end;

Page 27: Listas Lineares - foz.unioeste.br

Introdução TAD Lista Linear Implementação Tipos de Representação Referências

Alocação Seqüencial

Vantagens:

I acesso direto: qualquer elemento do arraypode ser acessado diretamente através deseu índice;

I tempo constante: o tempo de acesso dequalquer elemento do array, seja o primeiroou o último, é igual.

Page 28: Listas Lineares - foz.unioeste.br

Introdução TAD Lista Linear Implementação Tipos de Representação Referências

Alocação Seqüencial

Desvantagens:I custo para inserir ou retirar itens da lista, que pode

causar um deslocamento de todos os itens, no piorcaso;

I em aplicações em que não existe previsão sobre ocrescimento da lista, a utilização de arranjos emlinguagens como o Pascal pode ser problemáticaporque neste caso o tamanho máximo da lista tem deser definido em tempo de compilação.

Page 29: Listas Lineares - foz.unioeste.br

Introdução TAD Lista Linear Implementação Tipos de Representação Referências

Alocação Seqüencial

Desvantagens:I custo para inserir ou retirar itens da lista, que pode

causar um deslocamento de todos os itens, no piorcaso;

I em aplicações em que não existe previsão sobre ocrescimento da lista, a utilização de arranjos emlinguagens como o Pascal pode ser problemáticaporque neste caso o tamanho máximo da lista tem deser definido em tempo de compilação.

Page 30: Listas Lineares - foz.unioeste.br

Introdução TAD Lista Linear Implementação Tipos de Representação Referências

Alocação Seqüencial

Quando usar representação seqüencial?

I Em listas pequenas;

I Quando o comportamento das listas éconhecido;

I Pouca ocorrência de inserções / eliminaçõesno meio da lista, onde os deslocamentostornam o processo ineficiente.

Page 31: Listas Lineares - foz.unioeste.br

Introdução TAD Lista Linear Implementação Tipos de Representação Referências

Alocação Seqüencial

Quando usar representação seqüencial?

I Em listas pequenas;

I Quando o comportamento das listas éconhecido;

I Pouca ocorrência de inserções / eliminaçõesno meio da lista, onde os deslocamentostornam o processo ineficiente.

Page 32: Listas Lineares - foz.unioeste.br

Introdução TAD Lista Linear Implementação Tipos de Representação Referências

Alocação Seqüencial

Quando usar representação seqüencial?

I Em listas pequenas;

I Quando o comportamento das listas éconhecido;

I Pouca ocorrência de inserções / eliminaçõesno meio da lista, onde os deslocamentostornam o processo ineficiente.

Page 33: Listas Lineares - foz.unioeste.br

Introdução TAD Lista Linear Implementação Tipos de Representação Referências

Alocação Seqüencial

Quando usar representação seqüencial?

I Em listas pequenas;

I Quando o comportamento das listas éconhecido;

I Pouca ocorrência de inserções / eliminaçõesno meio da lista, onde os deslocamentostornam o processo ineficiente.

Page 34: Listas Lineares - foz.unioeste.br

Introdução TAD Lista Linear Implementação Tipos de Representação Referências

Alocação Encadeada

Alocação Encadeada

I Cada item é encadeado com o seguintemediante uma variável do tipo Apontador;

I Permite utilizar posições não contíguas dememória;

I É possível inserir e retirar elementos semnecessidade de deslocar os itens seguintesda lista;

I Há uma célula cabeça para simplificar asoperações sobre a lista.

Page 35: Listas Lineares - foz.unioeste.br

Introdução TAD Lista Linear Implementação Tipos de Representação Referências

Alocação Encadeada

Alocação Encadeada

Projeto de Algoritmos – Cap.3 Estruturas de Dados Básicas – Seção 3.1.2 10

Implementação de Listas por meio deApontadores

• Cada item é encadeado com o seguintemediante uma variável do tipo Apontador.

• Permite utilizar posições não contíguas dememória.

• É possível inserir e retirar elementos semnecessidade de deslocar os itens seguintesda lista.

• Há uma célula cabeça para simplificar asoperações sobre a lista.

...Lista nilxnx1

Page 36: Listas Lineares - foz.unioeste.br

Introdução TAD Lista Linear Implementação Tipos de Representação Referências

Alocação Encadeada

Estrutura da lista

I A lista é constituída de células;

I Cada célula contém um item da lista e umapontador para a célula seguinte;

I O registro TipoLista contém um apontadorpara a célula cabeça e um apontador para aúltima célula da lista.

Page 37: Listas Lineares - foz.unioeste.br

Introdução TAD Lista Linear Implementação Tipos de Representação Referências

Alocação Encadeada

Operações 1

Projeto de Algoritmos – Cap.3 Estruturas de Dados Básicas – Seção 3.1.2 11

Estrutura da Lista UsandoApontadores

• A lista é constituída de células.

• Cada célula contém um item da lista e umapontador para a célula seguinte.

• O registro TipoLista contém um apontadorpara a célula cabeça e um apontador para aúltima célula da lista.

type

Apontador = ^Celula ;

TipoItem = record

Chave: TipoChave;

{ outros componentes }

end;

Celula = record

Item : TipoItem;

Prox : Apontador;

end;

TipoLista = record

Primeiro : Apontador;

Ultimo : Apontador;

end;

Page 38: Listas Lineares - foz.unioeste.br

Introdução TAD Lista Linear Implementação Tipos de Representação Referências

Alocação Encadeada

Operações 2

Projeto de Algoritmos – Cap.3 Estruturas de Dados Básicas – Seção 3.1.2 12

Operações sobre Lista UsandoApontadores

procedure FLVazia (var Lista : TipoLista ) ;

begin

new ( Lista .Primeiro ) ;

Lista .Ultimo := Lista .Primeiro ;

Lista .Primeiro^.Prox := n i l ;

end;

function Vazia ( Lista : TipoLista ) : boolean;

begin

Vazia := Lista .Primeiro = Lista .Ultimo;

end;

procedure Insere (x : TipoItem ; var Lista : TipoLista ) ;

begin

new( Lista .Ultimo^.Prox) ;

Lista .Ultimo := Lista .Ultimo^.Prox;

Lista .Ultimo^.Item := x;

Lista .Ultimo^.Prox := n i l

end;

Page 39: Listas Lineares - foz.unioeste.br

Introdução TAD Lista Linear Implementação Tipos de Representação Referências

Alocação Encadeada

Operações 3

Projeto de Algoritmos – Cap.3 Estruturas de Dados Básicas – Seção 3.1.2 12

Operações sobre Lista UsandoApontadores

procedure FLVazia (var Lista : TipoLista ) ;

begin

new ( Lista .Primeiro ) ;

Lista .Ultimo := Lista .Primeiro ;

Lista .Primeiro^.Prox := n i l ;

end;

function Vazia ( Lista : TipoLista ) : boolean;

begin

Vazia := Lista .Primeiro = Lista .Ultimo;

end;

procedure Insere (x : TipoItem ; var Lista : TipoLista ) ;

begin

new( Lista .Ultimo^.Prox) ;

Lista .Ultimo := Lista .Ultimo^.Prox;

Lista .Ultimo^.Item := x;

Lista .Ultimo^.Prox := n i l

end;

Page 40: Listas Lineares - foz.unioeste.br

Introdução TAD Lista Linear Implementação Tipos de Representação Referências

Alocação Encadeada

Operações 4

Projeto de Algoritmos – Cap.3 Estruturas de Dados Básicas – Seção 3.1.2 12

Operações sobre Lista UsandoApontadores

procedure FLVazia (var Lista : TipoLista ) ;

begin

new ( Lista .Primeiro ) ;

Lista .Ultimo := Lista .Primeiro ;

Lista .Primeiro^.Prox := n i l ;

end;

function Vazia ( Lista : TipoLista ) : boolean;

begin

Vazia := Lista .Primeiro = Lista .Ultimo;

end;

procedure Insere (x : TipoItem ; var Lista : TipoLista ) ;

begin

new( Lista .Ultimo^.Prox) ;

Lista .Ultimo := Lista .Ultimo^.Prox;

Lista .Ultimo^.Item := x;

Lista .Ultimo^.Prox := n i l

end;

Page 41: Listas Lineares - foz.unioeste.br

Introdução TAD Lista Linear Implementação Tipos de Representação Referências

Alocação Encadeada

Operações 5

Projeto de Algoritmos – Cap.3 Estruturas de Dados Básicas – Seção 3.1.2 13

Operações sobre Lista UsandoApontadores

procedure Retira (p:Apontador ; var Lista : TipoLista ;

var Item:TipoItem) ;

{−−Obs. : o item a ser retirado e

o seguinte ao apontado por p −−}

var q: Apontador;

begin

i f Vazia ( Lista ) or (p = n i l ) or (p^.Prox = n i l )

then writeln ( ’Erro : Lista vazia ou posicao nao existe ’ )

else begin

q := p^.Prox ; Item := q^.Item ; p^.Prox := q^.Prox;

i f p^.Prox = n i l then Lista .Ultimo := p;

dispose (q) ;

end;

end;

procedure Imprime ( Lista : TipoLista ) ;

var Aux: Apontador;

begin

Aux := Lista .Primeiro^.Prox;

while Aux <> ni l do

begin

writeln (Aux^.Item.Chave) ; Aux := Aux^.Prox;

end;

end;

Page 42: Listas Lineares - foz.unioeste.br

Introdução TAD Lista Linear Implementação Tipos de Representação Referências

Alocação Encadeada

Operações 6

Projeto de Algoritmos – Cap.3 Estruturas de Dados Básicas – Seção 3.1.2 13

Operações sobre Lista UsandoApontadores

procedure Retira (p:Apontador ; var Lista : TipoLista ;

var Item:TipoItem) ;

{−−Obs. : o item a ser retirado e

o seguinte ao apontado por p −−}

var q: Apontador;

begin

i f Vazia ( Lista ) or (p = n i l ) or (p^.Prox = n i l )

then writeln ( ’Erro : Lista vazia ou posicao nao existe ’ )

else begin

q := p^.Prox ; Item := q^.Item ; p^.Prox := q^.Prox;

i f p^.Prox = n i l then Lista .Ultimo := p;

dispose (q) ;

end;

end;

procedure Imprime ( Lista : TipoLista ) ;

var Aux: Apontador;

begin

Aux := Lista .Primeiro^.Prox;

while Aux <> ni l do

begin

writeln (Aux^.Item.Chave) ; Aux := Aux^.Prox;

end;

end;

Page 43: Listas Lineares - foz.unioeste.br

Introdução TAD Lista Linear Implementação Tipos de Representação Referências

Alocação Encadeada

Vantagens:I Permite inserir ou retirar itens do meio da lista a um

custo constante (importante quando a lista tem deser mantida em ordem);

I Elementos consecutivos na lista não implica emelementos consecutivos na representação (ordemlógica e não física);

I Bom para aplicações em que não existe previsãosobre o crescimento da lista (o tamanho máximo dalista não precisa ser definido a priori).

Desvantagem: utilização de memória extra paraarmazenar os apontadores.

Page 44: Listas Lineares - foz.unioeste.br

Introdução TAD Lista Linear Implementação Tipos de Representação Referências

Alocação Encadeada

Vantagens:I Permite inserir ou retirar itens do meio da lista a um

custo constante (importante quando a lista tem deser mantida em ordem);

I Elementos consecutivos na lista não implica emelementos consecutivos na representação (ordemlógica e não física);

I Bom para aplicações em que não existe previsãosobre o crescimento da lista (o tamanho máximo dalista não precisa ser definido a priori).

Desvantagem: utilização de memória extra paraarmazenar os apontadores.

Page 45: Listas Lineares - foz.unioeste.br

Introdução TAD Lista Linear Implementação Tipos de Representação Referências

Knuth, D. E. (1997).The art of computer programming, volume 1 (3rd ed.):fundamental algorithms.Addison Wesley Longman Publishing Co., Inc., Redwood City,CA.

Lee, H. D. (2000).Notas didáticas.Algoritmos e Estruturas de Dados.

Ziviani, N. (2004).Projeto de Algoritmos.Thomson Learning, São Paulo, SP, 2 edition.