listas filas e pilhas
Download
Skip this Video
Download Presentation
Listas, Filas e Pilhas

Loading in 2 Seconds...

play fullscreen
1 / 13

Listas, Filas e Pilhas - PowerPoint PPT Presentation


  • 82 Views
  • Uploaded on

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 .

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Listas, Filas e Pilhas' - nani


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)

slide4

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).

slide5

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).

slide6

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.

slide7

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

slide8

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.
slide9

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
slide10

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?

slide12

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.
ad