Listas filas e pilhas
This presentation is the property of its rightful owner.
Sponsored Links
1 / 13

Listas, Filas e Pilhas PowerPoint PPT Presentation


  • 46 Views
  • Uploaded on
  • Presentation posted in: General

Listas, Filas e Pilhas. Katia Guimarães. Null. Operações com listas. O início da lista é identificado por um ponteiro especial (variável tipo endereço) chamado Head . O final da lista pode ser implementado com: 1. NULL/NIL - Endereço especial .

Download Presentation

Listas, Filas e Pilhas

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Listas filas e pilhas

Listas, Filas e Pilhas

Katia Guimarães


Opera es com listas

Null

Operações com listas

O início da lista é identificado por um ponteiro

especial (variável tipo endereço) chamado Head.

O final da lista pode ser implementado com:

1. NULL/NIL - Endereço especial .

2.Sentinela – Registro contendo uma chave especial.

(Requer o uso de apontador para o último elemento)

Head

. . .


Tipos de lista

Tipos de Lista

  • Lista duplamente encadeada

  • Cada elemento é um objeto com um campo chave

  • e dois ponteiros: ant e prox .

  • Lista simplesmente encadeada

  • Omitimos em cada elemento o ponteiro ant .

  • Lista circular

  • O ponteiro ant do primeiro elto. da lista aponta para o

  • último elto., e o ponteiro prox do último elto. aponta

  • para o primeiro elemento.

prox

ant

(Dados)


Listas filas e pilhas

Operações em Lista - Busca

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 registro que contém o elemento k.

Início

1. x := header(L)

2. enquanto x  nil e chave(x)  k

3. faça x := prox(x)

4. devolva x

Fim

Custo: T(n) = θ(n) (No pior caso pode percorrer toda a lista).


Listas filas e pilhas

Operações em Lista - Inserção

Lista-Inserção (L,x) – Dado um elemento x, o procedimento

inclui um registro no início da lista com o elemento x.

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

Custo: O tempo de execução para Inserção de uma lista

com n elementos é O(1).


Listas filas e pilhas

Operações em Lista - Remoção

Lista-Remoção (L,x) – O procedimento Remoção retira

um elemento x de uma lista duplamente encadeada.

Lista-Remoção (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

Custo: O procedimento Remoção executa em tempo Θ(n)

Para uma lista com n elementos, isto devido ao uso de Busca.


Listas filas e pilhas

Disciplinas de Pilha e Fila

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


Listas filas e pilhas

  • Opções de implementação

  • Arrays – A alocação seqüencial é favorável porque in-

  • serções e remoções não acarretam movimentação de nós.

  • Os elementos a serem inseridos ou removidos estão

  • em posições especiais.

  • Do que você precisa ?

  • Pilha - Uma variável que mantenha o topo da lista (topo).

  • 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 et al.


Listas filas e pilhas

  • 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


Listas filas e pilhas

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


Filas

Filas

Inserção (F,x) – insere o elto x previamente definido na fila F.

Obs: Tail é um ponteiro para o último elemento.

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

Qual o tempo de execução da operação de inserção?


Listas filas e pilhas

Filas

Remoção(F) – retirar o elemento x do início da fila F.

  • Remoção (F)

  • Entrada: uma fila F

  • Saída: uma fila (F – x)

  • Início

  • se head(F) = nil

  • então {fila vazia}

  • senão apont_x = head(F)

  • head(F) := prox(apont_x)

  • x := elem(apont_x)

  • desaloque(apont_x)

  • devolva(x)

  • Fim

Obs: Operação de consulta para pilhas e filas são imediatas.


Exerc cios

Exercícios

  • Faça os algoritmos para as operações sobre listas simples-

  • mente encadeadas e circulares.

  • Faça os algoritmos para as operações de pilhas e filas em

  • arrays.


  • Login