Imagem de fundo

Considere que, no algoritmo em alto nível incompleto a...

INSTRUÇÃO: Nas questões 31 e 32, considere que: ·

NIL represente a referência nula;
· Node seja um tipo registro que representa um nodo de lista simplesmente encadeada com os campos value, representando o valor armazenado, e next, representando um apontador para o nodo seguinte na lista;
· List seja um tipo registro que representa uma lista simplesmente encadeada nãocircular com nodo sentinela (ou cabeça); neste registro, o campo sentinel representa o nodo sentinela da lista;
· newNode(x,n) cria um novo nodo cujo campo value contém o valor x e cujo campo next aponta para o nodo apontado por n; esta função retorna um apontador para o novo nodo criado.

Considere que, no algoritmo em alto nível incompleto a seguir, L1 e L2 sejam apontadores para List, de modo que L2 seja inicialmente vazia, e A, B e C sejam apontadores para Node:

Imagem associada para resolução da questão

Se o objetivo desse algoritmo for "fazer com que L2 seja uma cópia invertida da lista L1", então o código representado por [código que falta] deve ser substituído por:


A

C := newNode(A^.value, B^.next);

B^.next := C;

A := A^.next;


B

C := newNode(A^.value, B^.next);

B^.next := C;

A := A^.next; B := C;


C

C := newNode(B^.value, B^.next);

A^.next := C;

A := A^.next;


D

C := newNode(A^.value, A^.next);

A^.next := A;

B := C;