Analise o algoritmo descrito a seguir e assinale a alternativa que descreve CORRETAMENTE sua operação.
Algoritmo1(L,k)
1 - p←L
2 - q←L.ponteiro
3 - enquanto q≠Null e q.valor≠k faça
4 - p←q
5 - q←q.ponteiro
6 - se q≠Null
7 - p.ponteiro←q.ponteiro
a.
O algoritmo 1 remove um elemento em uma lista ligada.
b.
O algoritmo 1 remove um elemento em uma lista duplamente ligada.
c.
O algoritmo 1 insere um elemento em uma lista duplamente ligada.
d.
O algoritmo 1 insere um elemento em uma lista ligada.
e.
O algoritmo 1 move um elemento em uma lista ligada.
Soluções para a tarefa
Resposta:
O algoritmo 1 remove um elemento em uma lista ligada.
Explicação:
Passos do Algoritmo1(L,k) que é RemoverLigada( ). Os parâmetros de entrada são o endereço da lista ligada (L) e o valor que se quer remover(k). Endereço do primeiro elemento na lista copiado em variável p (linha 1) e o endereço do segundo elemento (descrito pelo membro L.ponteiro) é copiado para a variável q (linha 2). Assim temos endereços de memória do elemento atual e de seu sucessor. O laço na linha 3 verifica se o ponteiro (q) excedeu o limite do último elemento da lista e se o valor armazenado no respectivo membro apontado por q é o elemento buscado. Se ambas as verificações não se confirmarem os ponteiros avançam para as próximas posições na lista (linhas 4 e 5). Existem duas formas de se encerrar o laço, q = Null, valor procurado não encontrado (nenhuma remoção é realizada); ou caso q.valor = k, indicando que o elemento buscado foi encontrado, quando há a remoção do elemento por meio da atribuição do endereço do próximo elemento ao membro correspondente no elemento anterior (linha 7).