Desejam-se realizar buscas nas seguintes coleções de dados, representadas na linguagem Java:
I - Um array de 1.000 números inteiros ordenados de forma decrescente;
II - Uma lista encadeada desordenada e alocada dinamicamente, cujos 1.000 nós contêm strings (uma string por nó);
III - Uma lista encadeada, alocada dinamicamente, cujos 1.000 nós contêm números decimais (um número double por nó) ordenados de forma ascendente.
Levando-se em consideração a exequibilidade e a eficiência, quais métodos de busca devem ser empregados, respectivamente, em cada um dos três casos acima?
Em um determinado treinamento de pessoal de TI, para facilitar o aprendizado sobre o funcionamento da estrutura de dados PILHA, utilizou-se o jogo de trocas, cujas regras são apresentadas a seguir.
JOGO DAS TROCAS - REGRAS
Para começar o jogo, o jogador recebe duas pilhas, P1 e P2. P1 está preenchida com quatro fichas, identificadas por nomes fictícios e empilhadas em ordem alfabética CRESCENTE a partir do topo.
P2 está inicialmente vazia. Uma ficha desempilhada de P1 é imediatamente empilhada em P2. A operação (P2,pop) acarreta impressão do nome que está na ficha desempilhada e descarte da ficha. Para ganhar o jogo, o jogador precisa determinar corretamente, dentre sequências derivadas da sequência inicial, por troca da posição de seus elementos, qual delas poderia ser impressa com essas operações. No início do jogo, foram dadas as pilhas P2, vazia, e P1 preenchida com as seguintes operações de empilhamento: push(P1,Zeus); push(P1,Hades); push(P1,Cibele); push(P1, Apolo).
Considerando-se esse cenário, qual seria a sequência possível de ser impressa, da esquerda para a direita, de acordo com as regras do JOGO DAS TROCAS?
Uma das formas de o gerente de uma agência bancária acompanhar a qualidade dos serviços prestados aos seus clientes é verificar o estado da ordem de atendimento em vários instantes ao longo do expediente. O sistema que a gerência utiliza para tal fim é a estrutura de dados conhecida como FILA, que mostra a situação da ordem de atendimento no instante da verificação. Nesse contexto, implementa-se uma estrutura de FILA de números inteiros com suas duas operações tradicionais: ENFILEIRAR(Z), que ocorre no instante em que um cliente recebe uma senha Z e entra na FILA; e DESENFILEIRAR( ), que ocorre quando um cliente sai da FILA, caso em que DESENFILEIRAR( ) retorna o número da senha. Sabe-se, também, que a representação do estado da FILA em um instante qualquer é realizada listando os elementos, de forma que o primeiro elemento, da esquerda para a direita, é o mais antigo presente na FILA. Nas condições apresentadas, considere uma FILA que começa vazia e realiza as seguintes operações:
ENFILEIRAR(8) → ENFILEIRAR(9) → DESENFILEIRAR( ) → ENFILEIRAR(10) → ENFILEIRAR(11) → ENFILEIRAR(DESENFILEIRAR ( )) → ENFILEIRAR(12) → DESENFILEIRAR( ) → ENFILEIRAR(13) → DESENFILEIRAR( )
Após realizar as operações acima, a FILA estará no estado