• Nenhum resultado encontrado

EX Listas Pilhas Filas

N/A
N/A
Protected

Academic year: 2021

Share "EX Listas Pilhas Filas"

Copied!
12
0
0

Texto

(1)

EXERCÍCIOS

Obs.: Para apoio aos exercícios, leia os conceitos nos livros:

EDELWEISS, N; GALANTE, R. Estruturas de Dados. Livros Didáticos UFRGS, V.18. Bookman, 2009. PEREIRA, Silvio do Lago. Estruturas de Dados Fundamentais – Conceitos e Aplicações. 12ª edição, 2ª reimpressão, São Paulo: Érica, 2009.

1) Simule o método a seguir, demonstrando cada passo em uma representação gráfica de lista: publicvoid metodoA (int pos, int valor)

{

if (dados.length == tamanho) System.out.println("ERRO!”);

else {

if (pos <= 0 || pos > tamanho+1)

System.out.println("Posição Inválida!");

else { if (pos = = 1) adicionaInicio(valor); else if (pos = = tamanho+1) adicionaFinal(valor); else{

for (int i = tamanho; i >= pos; i--)

dados[i]=dados[i-1]; dados[pos-1]=valor; tamanho++; } } } }

2) Implemente na classe Lista um método que adicione o elemento em uma posição específica, ambos são recebidos por parâmetro

3) Implemente na classe Lista um método que adicione um novo elemento, recebido por parâmetro, em ordem crescente.

4) Implemente na classe Lista um método que remove o elemento de uma posição específica recebida por parâmetro.

(2)

6) Uma pilha é um tipo especial de lista com política que restringe a manipulação dos elementos. A política da pilha é Last In First Out (LIFO), o último elemento adicionado será removido primeiro. Implemente uma classe denominada Pilha, de números inteiros positivos, com esta política.

Exemplo: Pilha Vazia

Adiciona um elemento (20)

A Pilha está cheia? Não:

incremente topo

dados[topo]=novo elemento Sim:

Mensagem “OVERFLOW - PILHA CHEIA!”

Qual é o índice do topo? ______________ Qual é o elemento do topo? ___________

Adiciona um elemento (10)

A Pilha está cheia? Não:

incremente topo

dados[topo]=novo elemento Sim:

Mensagem “OVERFLOW - PILHA CHEIA!”

Qual é o índice do topo? ______________ Qual é o elemento do topo? ___________

(3)

A Pilha está vazia? Não:

decremente topo Sim:

Mensagem “UNDERFLOW - PILHA VAZIA!”

Qual é o índice do topo? ______________ Qual é o elemento do topo? ___________

Remove um elemento ( )

A Pilha está vazia? Não:

decremente topo Sim:

Mensagem “UNDERFLOW - PILHA VAZIA!”

Qual é o índice do topo? ______________ Qual é o elemento do topo? ___________

7) Uma fila é um tipo especial de lista com política que restringe a manipulação dos elementos. A política da fila é First In First Out (FIFO), o primeiro elemento adicionado será removido primeiro. Implemente uma classe denominada Filha com esta política.

Exemplo: Fila Vazia

Adiciona um elemento (20)

A Fila está cheia? Não:

(4)

dados[tamanho]=novo elemento incremente tamanho

Sim:

Mensagem “OVERFLOW -. FILA CHEIA!”

Qual é o índice do início da fila? ______________ Qual é o elemento do início da fila? ___________ Qual é o índice do final da fila? ______________ Qual é o elemento do final da fila? ___________

Adiciona um elemento (10)

A Fila está cheia? Não:

dados[tamanho]=novo elemento incremente tamanho

Sim:

Mensagem “OVERFLOW -. FILA CHEIA!”

Qual é o índice do início da fila? ______________ Qual é o elemento do início da fila? ___________ Qual é o índice do final da fila? ______________ Qual é o elemento do final da fila? ___________

Remove um elemento ( )

A Fila está cheia? Não:

dados[tamanho]=novo elemento incremente tamanho

Sim:

Mensagem “OVERFLOW -. FILA CHEIA!”

Qual é o índice do início da fila? ______________ Qual é o elemento do início da fila? ___________

(5)

Qual é o índice do final da fila? ______________ Qual é o elemento do final da fila? ___________

Remove um elemento ( )

A Fila está cheia? Não:

dados[tamanho]=novo elemento incremente tamanho

Sim:

Mensagem “OVERFLOW -. FILA CHEIA!”

Qual é o índice do início da fila? ______________ Qual é o elemento do início da fila? ___________

8) Implemente uma classe Fila em alocação estática de memória. 9) Implemente uma classe Pilha em alocação estática de memória.

10) Modifique a classe Fila para quando atingir a capacidade máxima, o seu tamanho dobrar. Assim como, quando esvaziar, reduzir sua capacidade pela metade.

11) Modifique a classe Pilha para quando atingir a capacidade máxima, o seu tamanho dobrar. Assim como, quando esvaziar, reduzir sua capacidade pela metade.

12) Implemente uma classe de teste para a Fila e outra para a Pilha.

13) Implemente uma classe de teste que possui uma instância da classe Lista (lista1) e uma instância da classe Pilha (pilha1). Cada elemento removido da Lista deve ser adicionado no topo da Pilha. Cada elemento removido da Pilha deve ser adicionado no final da Lista.

14) Implemente uma Lista de caracteres em alocação estática com todas as operações indicadas a seguir: -verificar se a lista está vazia, retornando true se estiver vazia e false se não estiver;

-verificar se a lista está cheia, retornando true se estiver cheia e false se não estiver;

-adicionar caractere no início da lista, caso a operação não possa ser realizada, mostre mensagem avisando;

-adicionar caractere no final da lista, caso a operação não possa ser realizada, mostre mensagem avisando;

-adicionar caractere em determinada posição da lista, caso a operação não possa ser realizada, mostre mensagem avisando o motivo;

-remover caractere do início da lista, retornando o elemento que foi removido, caso a operação não possa ser realizada, mostre mensagem avisando;

-remover caractere do final da lista, retornando o elemento que foi removido, caso a operação não possa ser realizada, mostre mensagem avisando;

(6)

-remover caractere de determinada posição da lista, retornando o elemento que foi removido, caso a operação não possa ser realizada, mostre mensagem avisando;

-percorrer a lista concatenando os elementos em uma String que será devolvida no final.

15) Implemente uma Lista de caracteres em alocação estática com todas as operações indicadas a seguir: -verificar se a lista está vazia, retornando true se estiver vazia e false se não estiver;

-verificar se a lista está cheia, retornando true se estiver cheia e false se não estiver;

-adicionar caractere em ordem alfabética na lista, caso a operação não possa ser realizada, mostre mensagem avisando;

-remover um determinado caractere da lista, retornando o índice em que estava guardado, caso a operação não possa ser realizada, mostre mensagem avisando.

16) Implemente uma Lista de Nomes em alocação estática com todas as operações indicadas a seguir: -verificar se a lista está vazia, retornando true se estiver vazia e false se não estiver;

-verificar se a lista está cheia, retornando true se estiver cheia e false se não estiver;

-adicionar um novo nome em ordem alfabética na lista, caso a operação não possa ser realizada, mostre mensagem avisando;

-remover um determinado nome da lista, retornando o índice em que estava guardado, caso a operação não possa ser realizada, mostre mensagem avisando.

17) Implemente uma Lista de Strings em alocação estática com todas as operações indicadas a seguir: -verificar se a lista está vazia, retornando true se estiver vazia e false se não estiver;

-verificar se a lista está cheia, retornando true se estiver cheia e false se não estiver;

-adicionar uma String no início da lista, caso a operação não possa ser realizada, mostre mensagem avisando;

-adicionar uma String no final da lista, caso a operação não possa ser realizada, mostre mensagem avisando;

-adicionar uma String em determinada posição da lista, caso a operação não possa ser realizada, mostre mensagem avisando o motivo;

-remover a String do início da lista, retornando o elemento que foi removido, caso a operação não possa ser realizada, mostre mensagem avisando;

-remover a String do final da lista, retornando o elemento que foi removido, caso a operação não possa ser realizada, mostre mensagem avisando;

-remover a String de determinada posição da lista, retornando o elemento que foi removido, caso a operação não possa ser realizada, mostre mensagem avisando;

(7)

18) Implemente uma Lista de temperaturas em alocação estática com todas as operações indicadas a seguir:

-verificar se a lista está vazia, retornando true se estiver vazia e false se não estiver; -verificar se a lista está cheia, retornando true se estiver cheia e false se não estiver;

-adicionar uma temperatura no início da lista, caso a operação não possa ser realizada, mostre mensagem avisando;

-adicionar uma temperatura no final da lista, caso a operação não possa ser realizada, mostre mensagem avisando;

-adicionar uma temperatura em determinada posição da lista, caso a operação não possa ser realizada, mostre mensagem avisando o motivo;

-remover a temperatura do início da lista, retornando o valor que foi removido, caso a operação não possa ser realizada, mostre mensagem avisando;

-remover a temperatura do final da lista, retornando o valor que foi removido, caso a operação não possa ser realizada, mostre mensagem avisando;

-remover a temperatura de determinada posição da lista, retornando o valor que foi removido, caso a operação não possa ser realizada, mostre mensagem avisando;

-percorrer a lista concatenando os elementos em uma String que será devolvida no final. 19) Implemente a classe Aluno:

Atributos: nome (String) e matrícula (int) Métodos: de acesso, modificadores e construtor.

20) Implemente uma Lista de alunos em alocação estática com todas as operações indicadas a seguir: -verificar se a lista está vazia, retornando true se estiver vazia e false se não estiver;

-verificar se a lista está cheia, retornando true se estiver cheia e false se não estiver;

-adicionar novo aluno no início da lista, caso a operação não possa ser realizada, mostre mensagem avisando;

-adicionar novo aluno no final da lista, caso a operação não possa ser realizada, mostre mensagem avisando;

-adicionar novo aluno em determinada posição da lista, caso a operação não possa ser realizada, mostre mensagem avisando o motivo;

-remover aluno do início da lista, retornando o elemento que foi removido, caso a operação não possa ser realizada, mostre mensagem avisando;

-remover aluno do final da lista, retornando o elemento que foi removido, caso a operação não possa ser realizada, mostre mensagem avisando;

(8)

-remover aluno de determinada posição da lista, retornando o elemento que foi removido, caso a operação não possa ser realizada, mostre mensagem avisando;

-percorrer a lista concatenando os elementos em uma String que será devolvida no final. 21) Implemente uma classe Lista com as operações a seguir:

1) vazia 2) adiciona (19) 3) adiciona (20)

4) adiciona(15) 5) remove () 6) remove()

7) adiciona(21) 8) adiciona(12) 9) adiciona(25)

10) remove() 11) remove() 12) remove()

(9)

23) Considere que em uma classe ListaLigada já foram implementados os métodos conforme a descrição:

Atributos: private No dado;

public Lista ( ) – lista é inicializada vazia;

public boolean vazia () – retorna true se a lista está vazia, e false caso tenha pelo menos um elemento;

public void adiciona(Produto p) – adiciona o novo produto no final da lista. a) Implemente a classe Produto com código, descrição, valor unitário. b) Implemente a classe No com o dado com tipo abstrato Produto.

c) Implemente em Java um método para remover o primeiro produto da lista, guardando-o em uma variável local para retorná-lo no final. Evite erro por tentar remover elemento de uma lista vazia. Use o método vazia() para verificar se a lista está vazia.

d) Qual é a forma de alocação de memória (estática ou dinâmica)?

_____________________________________________________________________________________ 24) Implemente o método vazia() para uma Classe Pilha com alocação estática de memória (Conforme definições da sala de aula). O método retorna true se a pilha está vazia e false se possui pelo menos um elemento.

25) Simule e mostre a situação final de pilha1, lista1 e fila1 após a execução do trecho de código-fonte a seguir, utilizando uma lista em alocação estática que possui, em cada posição, um dígito do seu RA.

Digite seu RA na lista1:

Pilha pilha1 = new Pilha(lista1.length); Fila fila1= new Fila (lista1.length); int e=0; while (!lista1.vazia()){ e=lista1.removeInicio( ); pilha1.empilha(e); } 0 1 2 3 4 5 6 dados tamanho lista1

(10)

while(!pilha1.vazia()){

e=pilha1.desempilha(); fila1.adiciona(e); }

Definições: O valor inicial do topo da pilha é -1, o tamanho inicial da lista e fila é zero. Estado Final da lista1, pilha1 e fila1:

26) Considere que a sequencia: K,L,M,L,L,K,K está armazenada em uma FILA (f1) com alocação estática de memória, cuja posição inicial está à esquerda. Remova todos os elementos da FILA(f1), adicionando em uma PILHA(p1), cujo topo deverá ser o elemento mais à direita. Em seguida, remova todos os elementos da PILHA(p1), adicionando novamente em uma FILA(f2), cujo início é a posição mais à esquerda. Mostre o estado final de cada FILA e PILHA.

27) Responda Verdadeiro ou Falso para cada item:

a) A pilha é uma estrutura do tipo LIFO (Last In First Out) é uma lista em que as inserções e as remoções são feitas em somente uma das extremidades. _______________________

b) Uma fila circular possui como atributos o início, fim, tamanho e o vetor de dados. Quando um elemento é adicionado, ele é guardado no índice indicado pelo atributo fim e atualiza-se o atributo fim e incrementa-se o atributo tamanho. Quando um elemento é removido, atualiza-se o atributo início e decrementa-se o atributo tamanho, retorna-se o elemento removido. ______________________

28) Dadas as declarações a seguir: I) String nome; int x; float y; II) int x; float y; boolean b;

III) String nome; Aluno al; ListaLigada ll1;

0 1 2 3 4 5 6 0 1 2 3 4 5 6 0 1 2 3 4 5 6 dados tamanho lista1 dados topo pilha1 dados tamanho fila1

(11)

Selecione a afirmação correta:

a) As declarações dos itens I e II somente possuem tipos primitivos de dados. b) As declarações do item III possuem apenas tipos abstratos de dados. c) As declarações do item III possuem apenas tipos primitivos de dados. d) As declarações do item II possuem apenas tipos abstratos de dados. e) As declarações do item I possuem apenas tipos abstratos de dados.

29) Mostre detalhadamente o processo de cada método invocado a seguir para uma Lista com alocação estática de memória que inicia vazia. Adicione sempre que necessário a ordem das operações:

a) l1.adicionaInicio(101) b) l1.adicionaInicio(73) c) l1.adicionaFinal (79) d) l1.removeInicio( ) e) l1.removeInicio( )

30) Mostre detalhadamente o processo de cada método invocado a seguir para uma Lista Ligada que inicia vazia. Adicione sempre que necessário a ordem das operações:

b) l1.adicionaInicio(101) b) l1.adicionaInicio(73) c) l1.adicionaFinal (79) d) l1.removeInicio( ) e) l1.removeInicio( )

31) Implemente uma Lista de caracteres em alocação dinâmica com todas as operações indicadas a seguir:

-verificar se a lista está vazia, retornando true se estiver vazia e false se não estiver; -verificar se a lista está cheia, retornando true se estiver cheia e false se não estiver;

-adicionar caractere em ordem alfabética na lista, caso a operação não possa ser realizada, mostre mensagem avisando;

-remover um determinado caractere da lista, retornando o índice em que estava guardado, caso a operação não possa ser realizada, mostre mensagem avisando.

32) Implemente uma Lista de Nomes em alocação dinâmica com todas as operações indicadas a seguir: -verificar se a lista está vazia, retornando true se estiver vazia e false se não estiver;

-verificar se a lista está cheia, retornando true se estiver cheia e false se não estiver;

-adicionar um novo nome em ordem alfabética na lista, caso a operação não possa ser realizada, mostre mensagem avisando;

-remover um determinado nome da lista, retornando o índice em que estava guardado, caso a operação não possa ser realizada, mostre mensagem avisando.

33) Implemente uma Lista de temperaturas em alocação dinâmica com todas as operações indicadas a seguir:

-verificar se a lista está vazia, retornando true se estiver vazia e false se não estiver;

-adicionar uma temperatura no início da lista, caso a operação não possa ser realizada, mostre uma mensagem avisando;

(12)

-adicionar uma temperatura no final da lista, caso a operação não possa ser realizada, mostre mensagem avisando;

-adicionar uma temperatura em determinada posição da lista, caso a operação não possa ser realizada, mostre mensagem avisando o motivo;

-remover a temperatura do início da lista, retornando o valor que foi removido, caso a operação não possa ser realizada, mostre mensagem avisando;

-remover a temperatura do final da lista, retornando o valor que foi removido, caso a operação não possa ser realizada, mostre mensagem avisando;

-remover a temperatura de determinada posição da lista, retornando o valor que foi removido, caso a operação não possa ser realizada, mostre mensagem avisando;

-percorrer a lista concatenando os elementos em uma String que será devolvida no final. 34) Implemente em Java uma Pilha em alocação dinâmica de memória.

35) Implemente em Java uma Fila em alocação dinâmica de memória.

36) Transforme uma Fila em alocação dinâmica de memória em uma Fila Circular.

37) Implemente uma Lista de Strings em alocação dinâmica com todas as operações indicadas a seguir: -verificar se a lista está vazia, retornando true se estiver vazia e false se não estiver;

-adicionar uma String no início da lista, caso a operação não possa ser realizada, mostre mensagem avisando;

-adicionar uma String no final da lista, caso a operação não possa ser realizada, mostre mensagem avisando;

-adicionar uma String em determinada posição da lista, caso a operação não possa ser realizada, mostre mensagem avisando o motivo;

-remover a String do início da lista, retornando o elemento que foi removido, caso a operação não possa ser realizada, mostre mensagem avisando;

-remover uma String do final da lista, retornando o elemento que foi removido, caso a operação não possa ser realizada, mostre mensagem avisando;

-remover a String de determinada posição da lista, retornando o elemento que foi removido, caso a operação não possa ser realizada, mostre mensagem avisando;

Referências

Documentos relacionados

Não foram realizadas entrevistas cognitivas para subsidiar alterações de questionário na pesquisa TIC Kids Online Brasil

[r]

75 Para isso, torna-se fundamental primeiro, que as informações produzidas pelo Sistema de Segurança Pública e Defesa Social do Pará sejam efetivamente integradas, visto que,

ABSTRACT - In this study we examined the effects of the maternal age on the fecundity (absolute and relative), egg production, and fertilization rates of Nile tilapia

O presente edital de seleção se baseia nas legislações a seguir: Lei 11892 de 29 de 12 de 2008 que trata da criação dos IFs e estabelece como uma das finalidades a

O IDD é a diferença entre o desempenho médio do concluinte de um curso e o desempenho médio estimado para os concluintes desse mesmo curso e representa, portanto, quanto cada curso

Extensão do modelo de empacotamento de esferas para racionalizar estruturas de sólidos iônicos.. Relação de raios iônicos e a previsão de estruturas de

SQTI-016 Rodrigo Santana Leonardo de Souza Santos Dimas Padua / Andrea Feitosa / Alexandre Guedes / Wellington Ferreira Identificar Falha;. Propor