A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Aula 3 Listas, pilhas, filas. Operações com listas Questão importante: final da lista. Como implementar ? 1.NIL - endereço especial. 2. Sentinela – registro.

Apresentações semelhantes


Apresentação em tema: "Aula 3 Listas, pilhas, filas. Operações com listas Questão importante: final da lista. Como implementar ? 1.NIL - endereço especial. 2. Sentinela – registro."— Transcrição da apresentação:

1 Aula 3 Listas, pilhas, filas

2 Operações com listas Questão importante: final da lista. Como implementar ? 1.NIL - endereço especial. 2. Sentinela – registro contendo uma chave especial. Início da lista : identificado por um ponteiro head

3 Tipos de Lista 1.Lista duplamente encadeada Cada elto é um objeto com um campo chave e dois ponteiros: ant e prox. 2.Lista simplesmente encadeada Omitimos em cada elto o ponteiro ant. 3.Lista circular O ponteiro ant do head da lista aponta para o último elto e o ponteiro prox do último elto aponta para head.

4 Operações Lista-Busca(L,k) – encontra o primeiro elemento com chave k na lista L por uma busca linear simples, retornando um Ponteiro para este elemento. Lista-Busca (L,k) Entrada: lista de elementos L, elto k para a busca. Saída: ponteiro para o elemento k. Início 1. x := head(L) 2. enquanto x # nil e chave(x) # k 3. faça x := prox(x) 4. devolva x Fim

5 Custo: o procedimento Busca gasta θ(n), visto que no Pior caso podemos percorrer toda a lista. Lista-Inserção (L,x) – dado um elemento x, o procedimento Inserção po- siciona x no início da lista. Lista-Inserção(L,x) Entrada: lista de elementos L. Saída: lista de elementos (L + x). Início 1. prox(x) := head(L) 2. se head(L) # nil 3. então ant(head(L)) := x 4. head(L) := x 5. ant(x) := nil Fim

6 Custo: o tempo de execução para Inserção de uma lista com n elementos é O(1). Lista-Remoção (L,x) – o procedimento Remoção retira um elemento x de uma lista duplamente encadeada. Lista-Remoção (L,x) Entrada: lista L, elto x para remoção. Saída: lista (L – x). Início 1. x := Lista-Busca (L,x) 2. se ant(x) # nil 3. então prox(ant(x)) := prox(x) 4. senão head(L) := prox(x) 5. se prox(x) # nil 6. Então ant(prox(x)) := ant(x) Fim

7 Custo: o procedimento Remoção executa em tempo Θ(n) para uma lista de n eltos, isto devido ao uso de Busca. Pilhas e Filas Pilha - implementa a política LIFO (last-in, first-out) inserção : início da lista remoção: início da lista Fila - implementa a política FIFO (first-in,first-out) inserção : final da lista remoção : início da lista

8 Opções de implementação 1.Arrays – aqui a alocação sequencial é favorável porque in- serções e remoções não acarretam movimentação de nós. eltos a serem inseridos ou removidos estão em posições especiais. Do que vc precisa ? Pilha - uma variável que mantenha o topo da lista (top). Fila - duas variáveis que mantenham o início (head) e o final da lista (tail). Dica: Leia o tópico no livros dos autores Cormen, Leiserson et. al

9 2.Listas encadeadas Neste caso, as operações envolvidas são casos particulares daquelas apresentadas anteriormente. Pilhas Empilhamento – coloca um elto x previamente definido (aloca- Ção realizada,campos preenchidos) na pilha. Pilha-Inserção (P,x) Entrada: pilha P, elemento a ser inserido x. Saída: pilha (P + x) Início 1. Lista-Inserção (P,x) Fim

10 Desempilhamento – remove o elto x do topo da pilha P. Pilha-Remoção (P) Entrada: pilha P com elto x no topo. Saída: pilha (P – x) Início 1. Se head(P) = nil 2. então {pilha vazia} 3. senão head(P) := prox(x) prox(x) := nil desaloque x Fim

11 Filas Inserção (F,x) – insere o elto x previamente definido na fila F. Obs: tail é um ponteiro para o último elto. Inserção (F,x) Entrada: uma fila F, elto x para inserir Saída: fila (F + x) Início 1. prox(x) := nil 2. prox(tail(F)) := x 3. tail(F) := x Fim

12 Remoção(F) – retirar o elto x do início da fila F. Remoção (F) Entrada: uma fila F Saída: uma fila (F – x) Início 1.se head(F) = nil 2. então {fila vazia} 3. senão head(F) := prox(x) 4. prox(x) := nil 5. desaloque(x) Fim Obs: operação de consulta para pilhas e filas são imediatas Através do ponteiro head.

13 Exercícios 1.Faça os algoritmos para as operações sobre listas simples- mente encadeadas e circulares. 2.Faça os algoritmos para as operações de pilhas e filas em arrays.


Carregar ppt "Aula 3 Listas, pilhas, filas. Operações com listas Questão importante: final da lista. Como implementar ? 1.NIL - endereço especial. 2. Sentinela – registro."

Apresentações semelhantes


Anúncios Google