Fala, meus consagrados!
Vamos resolver uma questão sobre a estrutura de dados listas lineares. A questão foi feita pela CESGRANRIO.
As listas lineares são tipos abstratos de dados (TAD). São conjuntos de elementos, objetos, variáveis, tarefas ou qualquer coisa que se possa enumerar ou formar um conjunto. São estruturas de dados nas quais elementos de um mesmo tipo de dado estão organizados de maneira sequencial, não necessariamente estão fisicamente em sequência, mas a ideia é a existência de uma ordem lógica entre eles.
Follow @rgildoaraujo[CESGRANRIO 2006 EPE – Técnico de Nível Superior – Área Tecnologia da Informação] Os registros em uma lista, duplamente encadeada com 20 elementos possuem cada um três campos:
- próximo: um ponteiro para o próximo elemento da lista;
- valor: informação armazenada pelo elemento;
- anterior: um ponteiro para o elemento anterior da lista.
Sendo “Z” o décimo elemento desta lista e “X” e “Y” dois outros elementos que não pertencem à lista, com seus respectivos ponteiros “pZ”, “pX” e “pY”, considere o trecho de código abaixo.
Este trecho de código é usado para inserir na lista os elementos:
- [A] Y, logo após o Z, e X, logo após o Y.
- [B] Y, antes do Z, e X, logo após o Z.
- [C] Y, antes do Z, e X, antes do Y.
- [D] X, logo após o Z, e Y, logo após o X.
- [E] X, antes do Z, e Y, logo após o Z.
Comentários:
O trecho de código apresentado na questão mostra as operações para inserir os elementos “X” e “Y” em uma lista duplamente encadeada, considerando que “Z” é o décimo elemento da lista.
Vamos analisar o código passo a passo para entender o que está acontecendo e confirmar o gabarito:
- pY↑.próximo = pX;
- O campo próximo de “Y” é configurado para apontar para “X”;
- pX↑.anterior = pY;
- O campo anterior de “X” é configurado para apontar para “Y”;
- pX↑.próximo = pZ↑.próximo;
- O campo próximo de “X” é configurado para apontar para o elemento que está após “Z” na lista;
- pZ↑.próximo↑.anterior = pX;
- O campo anterior do elemento que está imediatamente após “Z” na lista original é atualizado para apontar para “X”;
- pZ↑.próximo = pY;
- O campo próximo de “Z” é atualizado para apontar para “Y”;
- pY↑.anterior = pZ;
- O campo anterior de “Y” é atualizado para apontar para “Z”.
Analisando o código, podemos ver que “Y” é inserido após “Z” e “X” é inserido após “Y”. Isso é confirmado pelo fato de que “Z” passa a apontar para “Y” e “Y” para “X”, enquanto “X” passa a apontar para o elemento que era o próximo de “Z” antes da inserção. Além disso, o elemento que era o próximo de “Z” antes da inserção agora tem seu campo anterior apontando para “X”.
De forma visual, temos:
Portanto, o gabarito correto para a questão é a letra A: Y, logo após o Z, e X, logo após o Y.
Esta é a única opção que corresponde à sequência de operações realizadas pelo código, inserindo “Y” imediatamente após “Z” e em seguida inserindo “X” após “Y”.
Gabarito: letra A.
Espero que gostem do conteúdo e desejo que se preparem conosco durante essa jornada na conquista de uma tão sonhada vaguinha em um concurso público.
É isso aí, galera.
[]’s e até a próxima.
——————————————
Rogerão Araújo
@profRogeraoAraujo

