• Nenhum resultado encontrado

Estruturas de Dados

N/A
N/A
Protected

Academic year: 2022

Share "Estruturas de Dados"

Copied!
21
0
0

Texto

(1)

Estruturas de Dados

Cristina Gomes Fernandes

Estruturas de Dados – p. 1

(2)

Listas lineares

Seja (x1, . . . , xn) uma lista linear.

Formas de armazenamento:

Vetor

x1 x2 x3 x4 · · · xn

Lista ligada

x1 x2 x3 x4 · · · xn

(3)

Comparação

Quantidade de memória: vetor é mais eficiente.

Inserção e remoção:

em vetor, consome tempo linear no pior caso, e em lista ligada, consome tempo constante.

Acesso ao elemento xi:

tempo constante em vetor e

tempo linear no pior caso em lista ligada.

Concatenação e quebra:

tempo linear em vetor e

tempo constante em lista ligada.

Estruturas de Dados – p. 3

(4)

Listas ligadas

Para uma célula p,

info(p): informação armazenada em p

prox(p): apontador para a próxima célula da lista

(5)

Listas ligadas

Para uma célula p,

info(p): informação armazenada em p

prox(p): apontador para a próxima célula da lista BUSQUE (p, x):

recebe uma lista (apontada por) p e um elemento x e devolve (o apontador de) uma célula da lista p que contenha x, ou NIL caso x não ocorra na lista p.

Estruturas de Dados – p. 4

(6)

Listas ligadas

Para uma célula p,

info(p): informação armazenada em p

prox(p): apontador para a próxima célula da lista BUSQUE (p, x):

recebe uma lista (apontada por) p e um elemento x e devolve (o apontador de) uma célula da lista p que contenha x, ou NIL caso x não ocorra na lista p.

BUSQUE (p, x) 1 q ← p

2 enquanto q 6= NIL e info(q) 6= x faça 3 q ← prox(q)

4 devolva q

(7)

Listas ligadas

Listas sem ordem...

INSIRA (p, x): recebe uma lista (apontada por) p e um

elemento x e insere uma célula nova contendo x no fim da lista apontada por p.

Estruturas de Dados – p. 5

(8)

Listas ligadas

Listas sem ordem...

INSIRA (p, x): recebe uma lista (apontada por) p e um

elemento x e insere uma célula nova contendo x no fim da lista apontada por p.

INSIRA (p, x)

1 t ← NOVACÉLULA(x) 2 se p = NIL

3 então p ← t 4 senão q ← p

5 senão enquanto prox(q) 6= NIL faça 6 senão q ← prox(q)

7 senão prox(q) ← t

(9)

Listas ligadas

REMOVA (p, x): recebe uma lista (apontada por) p e um elemento x e remove, se houver, uma célula que

contenha x da lista apontada por p.

Estruturas de Dados – p. 6

(10)

Listas ligadas

REMOVA (p, x): recebe uma lista (apontada por) p e um elemento x e remove, se houver, uma célula que

contenha x da lista apontada por p. REMOVA (p, x)

1 se p 6= NIL então 2 se info(p) = x

3 então t ← p p ← prox(p) LIBERACÉLULA(t) 4 senão q ← p

5 senão enquanto prox(q) 6= NIL e info(prox(q)) 6= x 6 senão faça q ← prox(q)

7 senão se prox(q) 6= NIL

8 senão então t ← prox(q) prox(q) ← prox(t) 9 senão então LIBERACÉLULA(t)

(11)

Listas ligadas

Listas ordenadas...

INSIRA (p, x): recebe uma lista (apontada por) p ordenada e um elemento x e insere uma célula nova contendo x na

lista apontada por p.

Estruturas de Dados – p. 7

(12)

Listas ligadas

Listas ordenadas...

INSIRA (p, x): recebe uma lista (apontada por) p ordenada e um elemento x e insere uma célula nova contendo x na

lista apontada por p. INSIRA (p, x)

1 t ← NOVACÉLULA(x)

2 se p = NIL ou x < info(p)

3 então prox(t) ← p p ← t 4 senão q ← p

5 senão enquanto prox(q) 6= NIL e info(prox(q)) < x faça 6 senão q ← prox(q)

7 senão prox(t) ← prox(q) prox(q) ← t

(13)

Mais sobre listas ligadas

apontadores e listas ligadas em C lista livre

cabeça de lista listas circulares

listas duplamente ligadas

Estruturas de Dados – p. 8

(14)

Fila

Lista linear em que todas as inserções são feitas em uma das extremidades (fim) e todas as remoções são feitas na outra extremidade (início).

(15)

Fila

Lista linear em que todas as inserções são feitas em uma das extremidades (fim) e todas as remoções são feitas na outra extremidade (início).

Implementação sequencial:

um vetor F[1 . . MAX] e duas variáveis inteiras ini e fim.

Estruturas de Dados – p. 9

(16)

Fila

Lista linear em que todas as inserções são feitas em uma das extremidades (fim) e todas as remoções são feitas na outra extremidade (início).

Implementação sequencial:

um vetor F[1 . . MAX] e duas variáveis inteiras ini e fim. Operações:

Inicialize(F, ini, fim) Insira(F, ini, fim, x) Remova(F, ini, fim) Primeiro(F, ini, fim)

(17)

Implementação das operações

Inicialize (F, ini, fim) 1 ini ← 0

2 fim ← 0

Estruturas de Dados – p. 10

(18)

Implementação das operações

Inicialize (F, ini, fim) 1 ini ← 0

2 fim ← 0

Insira (F, ini, fim, x) Remova (F, ini, fim)

1 fim ← (fim mod MAX) + 1 1 ini ← (ini mod MAX) + 1 2 F[fim] ← x 2 devolva F[ini]

(19)

Implementação das operações

Inicialize (F, ini, fim) 1 ini ← 0

2 fim ← 0

Insira (F, ini, fim, x) Remova (F, ini, fim)

1 fim ← (fim mod MAX) + 1 1 ini ← (ini mod MAX) + 1 2 F[fim] ← x 2 devolva F[ini]

Primeiro (F, ini, fim)

1 devolva F[(ini mod MAX) + 1]

Estruturas de Dados – p. 10

(20)

Implementação das operações

Inicialize (F, ini, fim) 1 ini ← 0

2 fim ← 0

Insira (F, ini, fim, x) Remova (F, ini, fim)

1 fim ← (fim mod MAX) + 1 1 ini ← (ini mod MAX) + 1 2 F[fim] ← x 2 devolva F[ini]

Primeiro (F, ini, fim)

1 devolva F[(ini mod MAX) + 1]

Vazia (F, ini, fim) 1 se ini = fim

2 então devolva VERDADE 3 senão devolva FALSO

(21)

Aplicações

cálculo de distância (Problema do ratinho)

implementação de Round-Robin

(escalonamento de processos numa CPU, RRDtool) Round-Robin é uma técnica usada para distribuição de carga entre servidores ou para interpolar valores em um gráfico.

Estruturas de Dados – p. 11

Referências

Documentos relacionados

VUOLO, J.H. Fundamentos da Teoria de Erros, Edgard Blucher Ltda, São Paulo, 1992 YIN, R.K. Estudo de caso: planejamento e métodos, Bookman, Porto Alegre, 2005.. Quando a

A tabela 25 apresenta os resultados brutos desta avaliação em relação à característica busca e a tabela 26 exibe o resultado ponderado para esta característica.. A tabela 27

• Árvores são ideais para armazenar hierarquias, além de serem mais rápidas e eficientes do que as estruturas de dados lineares... • É formada por um “conjunto de

– Os elementos devem estar ordenados – Realizar a busca pelo meio do vetor.

• Estas árvore podem assumir diferentes formas quando criadas ou modificadas. – A ordem de inserção ou remoção influem no formato

Os casos não previstos neste regulamento serão resolvidos em primeira instância pela coorde- nação do Prêmio Morena de Criação Publicitária e, em segunda instância, pelo

Para análise da susceptibilidade à erosão dos solos que compunham as paredes da voçoroca, foram realizados ensaios de Pinhole (Furo de Agulha), Desagregação e Dispersão

A assistência da equipe de enfermagem para a pessoa portadora de Diabetes Mellitus deve ser desenvolvida para um processo de educação em saúde que contribua para que a