Tecnologia da Informação Desenvolvimento de Sistemas

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:

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;