• Nenhum resultado encontrado

Estruturas de Dados. Cristina Gomes Fernandes. Estruturas de Dados p. 1

N/A
N/A
Protected

Academic year: 2021

Share "Estruturas de Dados. Cristina Gomes Fernandes. Estruturas de Dados p. 1"

Copied!
26
0
0

Texto

(1)

Estruturas de Dados

(2)

Pilha

Lista linear em que todas as inserções e remoções são feitas numa mesma extremidade (topo).

Implementação sequencial:

um vetor P[1 . . MAX] e uma variável inteira topo.

Operações: Inicialize(P, topo) Empilhe(P , topo, x) Desempilhe(P, topo) Topo(P, topo) Vazia(P , topo)

(3)

Implementação das operações

Inicialize (P, topo) 1 topo ← 0

(4)

Implementação das operações

Inicialize (P, topo) 1 topo ← 0

Empilhe (P, topo, x) Desempilhe (P, topo) 1 topo ← topo + 1 1 topo ← topo − 1

(5)

Implementação das operações

Inicialize (P, topo) 1 topo ← 0

Empilhe (P, topo, x) Desempilhe (P, topo) 1 topo ← topo + 1 1 topo ← topo − 1

2 P[topo] ← x 2 devolva P[topo + 1] Topo (P, topo)

(6)

Implementação das operações

Inicialize (P, topo) 1 topo ← 0

Empilhe (P, topo, x) Desempilhe (P, topo) 1 topo ← topo + 1 1 topo ← topo − 1

2 P[topo] ← x 2 devolva P[topo + 1] Topo (P, topo)

1 devolva P [topo] Vazia (P, topo)

1 se topo = 0

2 então devolva VERDADE

(7)

Aplicações

cálculo de expressões em notação posfixa

conversão de expressões em notação infixa para posfixa

administração de memória em tempo de execução

algoritmo de Graham para cálculo de casco convexo

(8)

Implementação com lista ligada

Inicialize (p)

1 p ← NIL Desempilhe (p)

1 x ← info(p) Empilhe (p, x) 2 q ← p

1 q ← NOVACÉLULA(x) 3 p ← prox(p)

2 prox(q) ← p 4 LIBERACÉLULA(q)

(9)

Implementação com lista ligada

Inicialize (p)

1 p ← NIL Desempilhe (p)

1 x ← info(p) Empilhe (p, x) 2 q ← p

1 q ← NOVACÉLULA(x) 3 p ← prox(p)

2 prox(q) ← p 4 LIBERACÉLULA(q)

3 p ← q 5 devolva x

Topo (p)

(10)

Implementação com lista ligada

Inicialize (p)

1 p ← NIL Desempilhe (p)

1 x ← info(p) Empilhe (p, x) 2 q ← p

1 q ← NOVACÉLULA(x) 3 p ← prox(p)

2 prox(q) ← p 4 LIBERACÉLULA(q)

3 p ← q 5 devolva x

Topo (p)

1 devolva info(p)

Vazia (p)

1 se p = NIL

2 então devolva VERDADE

(11)

LDL circular com cabeça

Inicialize (p) Topo (p)

1 p ← NOVACÉLULA(x) 1 devolva info(prox (p))

2 prox(p) ← p

3 prev(p) ← p

Desempilhe (p)

Empilhe (p, x) 1 x ← info(prox (p))

1 q ← NOVACÉLULA(x) 2 q ← prox(p)

2 prox(q) ← prox(p) 3 prox(p) ← prox (q)

3 prev(q) ← p 4 prev(prox (p)) ← p

4 prev(prox (p)) ← q 5 LIBERACÉLULA(q)

5 prox(p) ← q 6 devolva x

Vazia (p)

1 se prox(p) = p

2 então devolva VERDADE

(12)

Backtrack

Problema: Dado n gerar todas as subseqüências de

1, 2, . . . , n em ordem lexicográfica. Exemplo: n = 4 Saída: 1 1 2 1 2 3 1 2 3 4 1 2 4 1 3 1 3 4 1 4 2 2 3 2 3 4 2 4 3 3 4 4 Quantas subseqüências há?

(13)

Algoritmo

Gera Subseq Lex (n) 1 Inicialize(P, topo) 2 Empilhe(P, topo, 0)

3 enquanto não Vazia(P, topo) faça 4 x ← Desempilhe(P, topo)

5 Empilhe(P , topo, x + 1) 6 Imprime(P, topo)

7 enquanto Topo(P , topo) < n faça

8 Empilhe(P, topo, Topo(P, topo) + 1) 9 Imprime(P , topo)

(14)

Coloração de mapas

Problema: Dado um mapa com n países, cada país com a

lista de seus vizinhos, imprimir uma colocarção do mapa que use no máximo 4 cores.

Exemplo:

(15)

Coloração de mapas

Problema: Dado um mapa com n países, cada país com a

lista de seus vizinhos, imprimir uma colocarção do mapa que use no máximo 4 cores.

Exemplo:

1 2

(16)

Coloração de mapas

Problema: Dado um mapa com n países, cada país com a

lista de seus vizinhos, imprimir uma colocarção do mapa que use no máximo 4 cores.

Exemplo:

1 2

(17)

Coloração de mapas

Problema: Dado um mapa com n países, cada país com a

lista de seus vizinhos, imprimir uma colocarção do mapa que use no máximo 4 cores.

Exemplo:

1 2

3

(18)

Coloração de mapas

Problema: Dado um mapa com n países, cada país com a

lista de seus vizinhos, imprimir uma colocarção do mapa que use no máximo 4 cores.

Exemplo: 1 2 3 4 1

(19)

Coloração de mapas

Problema: Dado um mapa com n países, cada país com a

lista de seus vizinhos, imprimir uma colocarção do mapa que use no máximo 4 cores.

Exemplo: 1 2 3 4 1 3

(20)

Coloração de mapas

Problema: Dado um mapa com n países, cada país com a

lista de seus vizinhos, imprimir uma colocarção do mapa que use no máximo 4 cores.

Exemplo: 1 2 3 4 1 3 1

(21)

Coloração de mapas

Problema: Dado um mapa com n países, cada país com a

lista de seus vizinhos, imprimir uma colocarção do mapa que use no máximo 4 cores.

Exemplo: 1 2 3 4 1 2 3 1

(22)

Coloração de mapas

Problema: Dado um mapa com n países, cada país com a

lista de seus vizinhos, imprimir uma colocarção do mapa que use no máximo 4 cores.

Exemplo: 1 2 3 4 1 2 3 1 ?

(23)

Algoritmo

Pinta Mapa (n, viz ) 1 Inicialize(Pcor, t) 2 Empilhe(Pcor, t, 1) 3 c ← 1

4 enquanto t < n faça

5 se Pode Colorir(Pcor, t, c, viz) 6 então Empilhe(Pcor, t, c) 7 então c ← 1

8 senão c ← c + 1

9 senão enquanto c > 4 faça

10 senão c ← Desempilhe(Pcor, t) + 1 11 Imprime(Pcor, t)

(24)

Pode Colorir

Esta função recebe a lista de cores usadas para colorir os países de 1 a t, uma cor c e a lista de vizinhos de cada país e devolve SIM se o país t + 1 pode ser colorido com a cor c,

devolve NÃO caso contrário.

Pode Colorir (Pcor , t, c, viz)

1 para cada vizinho i de t + 1 faça

2 se i ≤ t e Pcor[i] = c

3 então devolva NÃO

(25)

Exercícios

Problema das 8 rainhas:

Dado um inteiro n, determinar se existe uma maneira de colocar n rainhas num tabuleiro de xadrez n × n sem que nenhuma delas ataque a outra.

Escreva um algoritmo que resolva o problema das 8 rainhas.

Caso exista uma maneira de colocar n rainhas, seu

algoritmo deve imprimir as posições das n rainhas para uma destas maneiras válidas de colocá-las.

(26)

Exercícios

Problema do passeio do cavalo:

Dado um inteiro n, determinar se existe uma maneira de

um cavalo se movimentar por todas as posições do

tabuleiro de xadrez, e terminar onde começou, sem passar duas vezes por nenhuma das posições.

Ataque da rainha Movimento do cavalo

R

Referências

Documentos relacionados

• Á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

– Um nó aponta para o seu primeiro filho (prim) – Cada filho aponta para o próximo (prox) irmão.. • Representação de um nó

Os Credores Operacionais que realizarem novos fornecimentos com Prazo Médio mínimo superior a 60 (sessenta) dias para pagamento, receberão 1% (um por cento) a mais, do

Neste presente estudo foi aplicado um questionário sobre a aceitação de um dos seus detergentes comparado a dois concorrentes utilizando a escala ideal , além

Quando cheguei na igreja domingo à noite uma pessoas veio a mim e disse: “A senhora sabia que fula- na agora é a pastora da igre- ja tal?” Eu disse: “Não, eu não sabia, mas não

I– Coordenador de Estágio do Centro: docente efetivo da UDESC, escolhido a partir de critérios específicos de cada Centro, responsável pela administração e