You are on page 1of 22

Anlise e Desenvolvimento de Sistemas

Web Aula 1 Introduo a Listas Lineares de Fila por Alocao Sequencial, utilizando teste de mesa para melhor compreenso.

Implementao das operaes de insero, pesquisa, modificao e excluso, em uma lista linear de fila por alocao sequencial.

Insero: da varivel Y para V .............. Y V Respeitando a regra de fila sempre no final.

Excluso: de V para varivel Y ............ Y V Respeitando a regra de fila sempre no incio

Pesquisa: localiza varivel Y em V ....... Y ? V Respeitando a regra de fila a partir do incio

Modificao: localiza varivel Y em V; troca valor de V pela varivel X X V ? V Um exemplo de Insero da varivel Y para V .............. Y V

se FIM = n ento OVERFLOW; seno FIM := FIM +1; V[FIM] := Y; (onde Y = Felipe) se FIM = 1 ento COMEO := 1; fim se;

Segue abaixo a tela inicial do nosso algoritmo, onde encontraremos valores para Fim = 3, Y= Felipe e Comeo = 1.

Prximo passo: Fim comea com valor 3 e N com valor 4. Como no so iguais, no teremos erro de fim de fila overflow. Ento, como no final de fila: Fim ser 3 mais 1, ficando Fim = 4. Observe na figura abaixo.

ltimo passo: V[FIM] := Y , ou seja, V[4] := Felipe (onde V[4] indica a quarta posio do vetor da fila) E se Fim fosse 1, iria atribuir 1 para a varivel comeo se FIM = 1, ento, COMEO := 1.

(neste primeiro exemplo, esta condio no ser atendida, pois Fim est valendo 4 e no 1).

Exemplo: Insero da varivel Y para V - Y V com Overflow se FIM = n ento OVERFLOW; seno FIM := FIM +1; V[FIM] := Y; (onde Y = Felipe) se FIM = 1 ento COMEO := 1; fim se;

Utilizando o nosso algoritmo, ainda podemos avaliar que a varivel Fim est iniciando com valor 4, e N tambm tem valor 4. Ento, se FIM = n, teremos a situao de OVERFLOW;

Exemplo: de YV para 1 elemento Y V se FIM = n ento OVERFLOW; seno FIM := FIM +1; V[FIM] := Y; (onde Y = Felipe) se FIM = 1 ento COMEO := 1; fim se; Primeiro passo: onde Fim = 0, ento Fim = N no, pois N igual a 4.

Passo 2 Fim ir receber 0 + 1, ficando com valor Fim = 1.

[FIM] := Y , ou seja, V[1] := Felipe (onde V[1] indica a primeira posio do vetor da fila)

Note que iremos, ento, na condio ainda no explorada, se FIM = 1 ento Comeo := 1

Um exemplo de Excluso: de V para varivel Y

YV

se FIM = 0 ento UNDERFLOW; seno Y:= V[COMEO]; COMEO := COMEO + 1; se COMECO>FIM ento COMEO := 0; FIM := 0; fim se fim se;

Se o Fim for igual a zero, ento teremos um underflow, ou seja, no h nada na fila. Neste exemplo inicial, no temos situao de underflow. Siga o primeiro modelo da figura esquerda. Situao inicial do nosso algoritmo, ento, como fim no zero, Siga o modelo da figura direita. Primeiro, Y ir receber o valor encontrado no vetor na posio 1 que o valor da varivel comeo. se COMEO>FIM, ento, COMEO := 0 e FIM := 0 como comeo no maior, eu fim ainda no ir satisfazer esta condio.

A partir da figura da sua direita, execute o algoritmo mais duas vezes e nos encaminhe o teste de mesa da forma apresentada acima.

Execute o mesmo algoritmo, mas iniciando com a varivel COMEO = 3 e FIM = 3. Nos encaminhe o teste de mesa da forma apresentada acima.

Construa um algoritmo de insero e outro de excluso de nodos de uma fila de n elementos, de tal forma que a fila cresa para frente, ou seja, da ensima posio para a primeira.

Grande inconveniente da estrutura de fila Situaes de OVERFLOW podem ocorrer com a fila praticamente vazia; Motivo: no aproveitamento, deixando posies vazias (sem contedo).

SANTOS, Clsio S. e Edelweiss, Nina. Estruturas de Dados. Apostila disponvel na copiadora. VELOSO, P.A.S; SANTOS, C.S; AZEREDO, P.A; FURTADO, A.L.: Estruturas de Dados. Editora Campus, Rio de Janeiro, 1985. SZWARCFITER, Jayme L. e MARKENZON, Lilian. Estrutura de Dados e seus Algoritmos. Rio de Janeiro: LTC, 1994. HOROWITZ, E.; SAHNI, S. Fundamentos de Estruturas de Dados. Editora Campus, 1984. WIRTH, N.: Algoritmos e Estruturas de Dados. Prentice Hall do Brasil, Rio de janeiro, 1989. FURTADO, A. L.; Teoria dos Grafos Algoritmos. LTC, Rio de Janeiro, 1983. AHO, AV.; HOPCROFT, J.; ULLMAN, J. Data Structures and Algorithms. Adisson - Wesley, 1987. ASCENCIO, Ana Fernanda Gomes; CAMPOS, Edilene Aparecida Veneruchi de; Fundamentos da programao de computadores: algoritmos, Pascal, C/C++ e Java; 2ed. So Paulo, Pearson, 2007. DEITEL, H. M.; DEITEL; P. J. Java: como programar. 6ed. So Paulo, Pearson, 2007. PUGA, Sandra; RISSETTI, Gerson; Lgica de programao e estruturas de dados: com aplicaes em Java. So Paulo, Pearson, 2003. ASCENCIO, Ana Fernanda Gomes; Aplicaes das estruturas de dados em Delphi, So Paulo, Pearson, 2004. Profs. Waldemar Celes e Jos Lucas Rangel; Apostila de Estruturas de Dados. PUC-RIO Curso de Engenharia - 2002

Web Aula 2 Introduo Pilha Duplamente Encadeada, usando teste de mesa para melhor compreenso. Na estrutura virtual de pilha: As incluses so feitas no topo; As excluses so feitas no topo;

A consulta feita partir do topo;

Insero: da varivel Y para PILHA .............. Y PILHA Excluso: de PILHA para varivel Y ............. Y PILHA Pesquisa: localiza varivel Y na PILHA ........ Y ? PILHA Modificao: localiza varivel Y em PILHA; troca valor de PILHA pela varivel X ............ X Y ? PILHA Y PILHA - Incluso

Vamos avaliar o algoritmo abaixo, com teste de mesa: aloc P; P.INFO := Y; P.PROX := TOPO; TOPO := P;

Observe a tela inicial, antes da execuo do algoritmo acima. Para acompanhar o passo a passo, siga as fechas.

Passo 1: aloc P;

Passo 2: P.INFO := Y;

Passo 3: P.PROX := TOPO;

Passo 4: TOPO := P; Note que a fecha de relacionamento do TOPO, de Orlando passou para Aberto, pois Alberto de fato o topo, o ltimo elemento da pilha.

Y PILHA - Excluso

se TOPO=L fim se; ento UNDERFLOW; seno Y:= TOPO.INFO; P:= TOPO; TOPO:= TOPO.PROX; lib P;

Observe novamente o passo-a-passo. Observe a tela ao lado.Indica a tela inicial antes que o algoritmo se inicie.

Passo 1: Verifica se a pilha est vazia. Como no est neste momento, executa o comando Y:= TOPO.INFO;

Este atribui o valor ao nodo topo da lista, na varivel Y.

Passo 2: P ir receber o topo que, neste momento, Orlando. P:= TOPO;

Passo 3: Topo passa a ser o prximo nodo depois do Orlando, j que este o nodo e estamos excluindo. TOPO:= TOPO.PROX;

Passo 4: Libera o nodo onde estava o Orlando. Note como demonstra a fecha onde est o topo, como finalizou a figura. lib P;

Y ? PILHA - Pesquisa

P:= TOPO; enquanto TOPO # L e TOPO.INFO # Y faa TOPO:= TOPO.PROX;

fim enquanto; se TOPO # L fim se; TOPO:=P; ento SUCESSO; seno FRACASSO;

Observe a tela abaixo. Indica a tela inicial antes que o algoritmo se inicie.

Passo 1: Aloca o nodo topo da pilha. P:= TOPO;

Passo 2: Enquanto ainda existir pilha e o Topo dela for diferente da varivel Y. TOPO # L ou TOPO.INFO # Y

O topo ir receber o prximo nodo da pilha. TOPO:= TOPO.PROX;

A condio do enquanto ainda no foi satisfeita; no pilha vazia; nem o topo Paulo igual varivel Y = Rogerio.

Observe que a condio do enquanto foi satisfeita, pois o topo da pilha, neste momento, Rogerio Assim, com a varivel Y, o lao interrompido neste ponto.

Passo 3: Se aps terminado o loop (condio enquanto) a pilha ainda no estiver vazia,

ento houve Sucesso, ou seja, encontrou o Rogerio na pilha. TOPO # L

Passo 4: Topo recebe P, onde P Orlando, ltimo nodo da pilha, cuja finalidade recomear o algoritmo. E toda pesquisa deve iniciar pelo topo. TOPO:=P;

X Y ? PILHA - Pesquisa e Alterao

Segue algoritmo abaixo como modelo de pesquisa e alterao. P:= COMEO; enquanto COMEO # L e COMEO.INFO # Y faa COMEO:= COMEO.PROX; fim enquanto; se COMEO # L ento COMEO.INFO := X; SUCESSO;

seno FRACASSO; fim se; COMEO:=P;

SANTOS, Clsio S. e Edelweiss, Nina. Estruturas de Dados. Apostila disponvel na copiadora. VELOSO, P.A.S; SANTOS, C.S; AZEREDO, P.A; FURTADO, A.L.: Estruturas de Dados. Editora Campus, Rio de Janeiro, 1985. SZWARCFITER, Jayme L. e MARKENZON, Lilian. Estrutura de Dados e seus Algoritmos. Rio de Janeiro: LTC, 1994. HOROWITZ, E.; SAHNI, S. Fundamentos de Estruturas de Dados. Editora Campus, 1984. WIRTH, N.: Algoritmos e Estruturas de Dados. Prentice Hall do Brasil, Rio de janeiro, 1989. FURTADO, A. L.; Teoria dos Grafos Algoritmos. LTC, Rio de Janeiro, 1983. AHO, AV.; HOPCROFT, J.; ULLMAN, J. Data Structures and Algorithms. Adisson Wesley, 1987. ASCENCIO, Ana Fernanda Gomes; CAMPOS, Edilene Aparecida Veneruchi de; Fundamentos da programao de computadores: algoritmos, Pascal, C/C++ e Java; 2ed. So Paulo, Pearson, 2007. DEITEL, H. M.; DEITEL; P. J. Java: como programar. 6ed. So Paulo, Pearson, 2007. PUGA, Sandra; RISSETTI, Gerson; Lgica de programao e estruturas de dados: com aplicaes em Java. So Paulo, Pearson, 2003. ASCENCIO, Ana Fernanda Gomes; Aplicaes das estruturas de dados em Delphi, So Paulo, Pearson, 2004.