### A good answer might be:

            # create the second node
            li      $v0,9             # allocate memory
            li      $a0,8             # 8 bytes
            syscall                   # $v0 <-- address

            # link the second node to the first
            sw      $v0,4($s1)        # copy address of second node
                                      # into the first node

            # make the new node the current node
            move    $s1,$v0           # $s1 = second node

            # initialize the second node
            li      $t0,2             # store 2
            sw      $t0,0($s1)        # at displacement 0

# `$s1` as the Current Node

After the above code has finished, the first two nodes have been created. Register `$s1` is now pointing to the second node. The first node has not been lost, because the field `first` points to it. When a register is used to point at the node were work is being done (as does `$s1`) it is sometimes called a pointer to the current node.

Now let us work on the third node. Again, `$s1` is used as the pointer to the current node.

            # create the third node
            li      $v0,9             # allocate memory
            li      $a0,8             # 8 bytes
            syscall                   # $v0 <-- address

            # link the third node to the second
            sw      $v0,4($s1)        # copy address of third node
                                      # into the second node

            # make the new node the current node
            move    $s1,$v0           # $s1 = third node

            # initialize the third node
            li      $t0,3             # store 3
            sw      $t0,0($s1)        # at displacement 0

            # end the list
            sw      $0,4($s1)         # put null in the link field

Linked lists can be aggravating. Look at the line of code where the current pointer is changed from the second node to the third:

            # make the new node the current node
            move    $s1,$v0           # $s1 = third node

This "change in meaning" of `$s1` must be done in the correct sequence. The previous value of `$s1` must already be saved in the second node.

### QUESTION 9:

Register `$s1` no longer points at the second node. Has the second node been lost?