• Nenhum resultado encontrado

Listas Encadeadas (2) Lista Classificada Encadeada

N/A
N/A
Protected

Academic year: 2021

Share "Listas Encadeadas (2) Lista Classificada Encadeada"

Copied!
9
0
0

Texto

(1)

Listas Encadeadas (2)

UFSC-CTC-INE

INE5384 - Estruturas de Dados

Prof. Ronaldo S. Mello

2002/2

Lista Classificada Encadeada

• Supõe-se os seguintes atributos:

– ListaEncadeada (referência a objeto da

classe ListaEncadeada)

– NroElementos

• Exemplo:

14 32 7 15 22 ^

Início

Fim

Lista Encadeada: NroElementos: 5

(2)

Implementação

Classe ListaClassificadaListaEncadeada

Implementa ListaClassificada

início

listaEncadeada ListaEncadeada;

NroElementos inteiro;

Construtor ListaClassificadaListaEncadeada ()

início

listaEncadeada

NOVO ListaEncadeada();

NroElementos

0;

fim

. . .

Inserção de Elemento

Classe ListaClassificadaListaEncadeada

Implementa ListaClassificada

início

listaEncadeada ListaEncadeada;

NroElementos inteiro;

Método Insere (objeto ObjetoComparável)

início

listaEncadeada.InsereNoFinal(objeto);

NroElementos

NroElementos + 1;

(3)

Exclusão de Elemento

Classe ListaClassificadaListaEncadeada

Implementa ListaClassificada

início

listaEncadeada ListaEncadeada;

NroElementos inteiro;

Método Exclui (objeto ObjetoComparável)

início

se NroElementos = 0 então Exceção EstruturaVazia();

listaEncadeada.Exclui(objeto);

NroElementos

NroElementos - 1;

fim

. . .

Pesquisa na Lista

• retPosição (posição inteiro) retorna

ObjetoComparável;

(método get do livro)

• encontra (objeto ObjetoComparável) retorna

ObjetoComparável;

(método find do livro)

• ehMembro (objeto ObjetoComparável);

(método isMember do livro)

• procurePosição (objeto ObjetoComparável)

retorna Cursor;

(método findPosition do livro)

(4)

Retorna Posição do Elemento

Classe ListaClassificadaListaEncadeada

Implementa ListaClassificada início

Método retPosição (posição inteiro) retorna ObjetoComparável; início

ListaEncadeada.Elemento ptr; i inteiro;

se NroElementos = 0 então Exceção EstruturaVazia(); se posição < 0 ou posição >= NroElementos então

Exceção OperaçãoIlegal(); ptr = listaEncadeada.ObtemInício();

para i de 0 até (posição - 1) faça ptr = ptr.ObtemProx(); retorna (ObjetoComparável) ptr.ObtemDado();

fim . . .

Procura Posição do Elemento

. . .

Método procuraPosição (objeto ObjetoComparável) retorna Cursor; início

ListaEncadeada.Elemento ptr; i inteiro;

se NroElementos = 0 então Exceção EstruturaVazia(); ptr = listaEncadeada.ObtemInício();

enquanto ptr ≠ NULL faça início

se objeto.ehIg(ptr.ObtemDado()) = VERDADEIRO então retorna NOVO MeuCursor (ptr);

ptr = ptr.ObtemProx(); fim;

(5)

Complexidade de Algoritmos

• Medida de complexidade de tempo de algoritmos:

notação

O()

• Avalia o tempo de execução do algoritmo (no pior

caso) em função do número de dados (n) na

estrutura de dados

• Exemplos:

– O(1)

: executa sempre em tempo constante;

– O(n)

: no pior caso, analisa os n dados da ED

– O(n

2

)

: no pior caso, analisa n.n vezes os dados da ED

• O(1) < O(n) < O(n

2

)

Vetor X Encadeamento

O(n)

O(n)

Exclusão posição

ou elemento ”x”

O(n)

O(1)

Exclusão final

O(1)

O(n)

Exclusão início

O(n)

O(1)

Pesquisa posição

“x”

O(n)

O(n)

Pesquisa elemento

“x”

O(n)

O(n)

Inserção posição

“x”

O(1)

O(1)

Inserção final

O(1)

O(n)

Inserção início

Encadeamento

Vetor

Operação

(6)

Vetor X Encadeamento

O(n)

O(n)

Exclusão posição

ou elemento ”x”

O(n)

O(1)

Exclusão final

O(1)

O(n)

Exclusão início

O(n)

O(1)

Pesquisa posição

“x”

O(n)

O(n)

Pesquisa elemento

“x”

O(n)

O(n)

Inserção posição

“x”

O(1)

O(1)

Inserção final

O(1)

O(n)

Inserção início

Encadeamento

Vetor

Operação

o algoritmo poderia ser melhorado

se fosse usada uma lista duplamente

encadeada

Lista Duplamente Encadeada

Início

Fim

Lista Duplamente Encadeada: 14 ^ 32 7 15 22 ^

(7)

Implementação

Classe ListaDuplamenteEncadeada

início

inicio, fim ElementoDuplamenteEncadeado; Classe ElementoDuplamenteEncadeado início

dado Object;

ant, prox ElementoDuplamenteEncadeado;

Construtor Elemento (dado object, ant Elemento, prox Elemento) início this.dado ← dado; this.ant ← ant; this.prox ← prox; fim . . .

Implementação

. . .

Método ObtémProx() retorna ElementoDuplamenteEncadeado; ...

Método ObtémAnt() retorna ElementoDuplamenteEncadeado;

. . . fim;

Construtor ListaDuplamenteEncadeada (); início

início ← null; fim ← null; fim;

Método ObtemInício() retorna ElementoDuplamenteEncadeado; ...

Método ObtemFim() retorna ElementoDuplamenteEncadeado; ...

(8)

Exclusão no Final

• Exceções a tratar?

– lista vazia

• Como proceder?

fim

fim.ant;

(fim.prox.destroy;)

fim.prox

NULL;

Início

Fim

14 ^ 32 7 15 ^ 22 ^

Exclusão no Final

• Exceções a tratar?

– lista vazia

• Se existe apenas 1 elemento na lista?

fim

fim.ant;

se fim = NULL então inicio

NULL

senão fim.prox

NULL;

(9)

Implementação

Método excluiNoFinal ();

início

se inicio = NULL então Exceção EstruturaVazia();

fim

fim.ant;

se fim = NULL então inicio

NULL

senão fim.prox

NULL;

fim;

Complexidade: O(1)

Exercícios

• Implementar na classe

ListaDuplamenteEncadeada:

– excluiNoInício();

– insereNoInício(objeto Objeto);

– insereNoFinal(objeto Objeto);

– exclui(objeto Objeto);

– incluiPosição(objeto Objeto, posição inteiro);

– imprimeLista();

Referências

Documentos relacionados

– cada elemento da tabela hash representa um ponteiro para uma lista encadeada. 23/03/16

• Now, we will study a linear data structure (just like the known arrays) named Linked Lists.

de 2004, que estabelece e aprova o Plano de Metas de Inclusão Racial e Social na Universidade Federal do Paraná, TORNAM PÚBLICOS os procedimentos e as normas que

Quanto à comicidade de palavras, Brito (1999) é enfático ao dizer que Camões, através, mormente, do processo de repetição, cria inúmeras comicidades de palavras quando

para uma próxima estrutura do mesmo tipo uma lista encadeada é representada pelo ponteiro para seu primeiro elemento, do tipo Lista*. A palavra reservada typedef nada mais é do que

Crie uma classe Aluno, contendo um atributo ArrayList para floats que corresponde ao histórico de notas de um aluno.A classe terá como métodos:.. • Construtor, instanciando

Dada uma lista encadeada que armazena n ´umeros inteiros, escreva uma func¸ ˜ao que transforma a lista dada em duas listas encadeadas: a primeira contendo os elementos cujo conte

uma lista encadeada é representada pelo ponteiro para seu primeiro elemento, do tipo