8.9. Additional Practice Exercises

8.9.1. Code Tracing

Code Tracing

Note

The objective of the following exercises is for students to understand how nodes are created and linked in memory using the Node class. They should be able to trace references step by step to predct program output and recognize that next can be reassigned.

Note

Some parts of this activity contain solutions. To show the solutions, you will need to toggle “Show Solutions” above.

Question 1

!includesub chap8-practice.common.puml!STYLE
!includesub chap8-practice.common.puml!NODE

Draw the memory map for the following code:

Node n1 = new Node("A");
Node n2 = new Node("B");
n1.setNext(n2);
Sample Visualizations
code visualization

Fig. 8.6 Note: The debugger breakpoint is on line 5.

code visualization

Fig. 8.7 Note: The debugger breakpoint is on line 6.

code visualization

Fig. 8.8 Note: The debugger breakpoint is on line 7.

Question 2

!includesub chap8-practice.common.puml!STYLE
!includesub chap8-practice.common.puml!NODE

Draw the memory map for the following code and write the output given in the final line.

Node x = new Node("X");
x.setNext(new Node("Y"));
x.getNext().setNext(new Node("Z"));

System.out.println(x.getNext().getNext().getItem());
Sample Solution
code visualization

Fig. 8.9 Note: The debugger breakpoint is on line 5.

code visualization

Fig. 8.10 Note: The debugger breakpoint is on line 6.

code visualization

Fig. 8.11 Note: The debugger breakpoint is on line 8.

Output Z

Question 3

!includesub chap8-practice.common.puml!STYLE
!includesub chap8-practice.common.puml!NODE

Draw the memory map for the following code and write the output given in the final line.

1Node n1 = new Node("one");
2Node n2 = new Node("two");
3Node n3 = new Node("three");
4
5n1.setNext(n2);
6n2.setNext(n3);
7n1.setNext(n3);
8
9System.out.println(n1.getNext().getItem());
Sample Solution
code visualization

Fig. 8.12 Note: The debugger breakpoint is on line 5.

code visualization

Fig. 8.13 Note: The debugger breakpoint is on line 6.

code visualization

Fig. 8.14 Note: The debugger breakpoint is on line 8.

code visualization

Fig. 8.15 Note: The debugger breakpoint is on line 9.

code visualization

Fig. 8.16 Note: The debugger breakpoint is on line 10.

code visualization

Fig. 8.17 Note: The debugger breakpoint is on line 12.

Output

three

Question 4

!includesub chap8-practice.common.puml!STYLE
!includesub chap8-practice.common.puml!NODE

Draw the memory map for the following code and write the output given in the final line.

Node n1 = new Node("alpha");
Node n2 = new Node("beta");
Node n3 = new Node("gamma");

n1.setNext(n2);
n2.setNext(n3);

Node p = n1.getNext();
p.setNext(new Node("delta"));

System.out.println(n2.getNext().getItem());
Sample Solution
code visualization

Fig. 8.18 Note: The debugger breakpoint is on line 5.

code visualization

Fig. 8.19 Note: The debugger breakpoint is on line 6.

code visualization

Fig. 8.20 Note: The debugger breakpoint is on line 8.

code visualization

Fig. 8.21 Note: The debugger breakpoint is on line 9.

code visualization

Fig. 8.22 Note: The debugger breakpoint is on line 11.

code visualization

Fig. 8.23 Note: The debugger breakpoint is on line 12.

Output

delta

Question 5

!includesub chap8.common.puml!STYLE
!includesub chap8.common.puml!NODE

Draw the memory map for the code below and write the output produced by the following code:

4Node n1 = new Node("A");
5n1.setNext(n1);
6System.out.println(n1.getNext().getNext().getNext().getItem());
Solution
Question 6

!includesub chap8.common.puml!STYLE
!includesub chap8.common.puml!NODE

Draw the memory map for the code below and write the output produced by the following code:

4Node n1 = new Node("A");
5n1.setNext(new Node("B", n1));
6System.out.println(n1.getNext().getNext().getNext().getItem());
7System.out.println(n1.getNext().getNext().getNext().getNext().getItem());
Solution
Question 7

!includesub chap8-practice.common.puml!STYLE
!includesub chap8-practice.common.puml!NODE

Draw the memory map for the following code and then write the output.

 3Node player1 = new Node("Mario");
 4player1.setItem("Luigi");
 5
 6new Node("Peach", player1);
 7
 8Node player2 = new Node("Yoshi");
 9player2.setNext(player1);
10player1.setNext(new Node("Bowser"));
11player2.getNext().getNext().setNext(new Node("DonkeyKong"));
12
13Node player3 = player2.getNext().getNext();
14player3.getNext().setNext(new Node("Toad"));
15
16System.out.println(player3.getNext().getNext().getNext());
17System.out.println(player2.getItem());
18System.out.println(player1.getNext().getNext().getItem());
19System.out.println(player3.getNext().getNext().getItem());
20
21player1.setNext(new Node("Wario"));
22
23System.out.println(player1.getNext().getNext());
Solution

Output

null
Yoshi
DonkeyKong
Toad
null
code visualization

Fig. 8.24 Note: The debugger breakpoint is on line 4.

code visualization

Fig. 8.25 Note: The debugger breakpoint is on line 5.

code visualization

Fig. 8.26 Note: The debugger breakpoint is on line 7.

code visualization

Fig. 8.27 Note: The debugger breakpoint is on line 9.

code visualization

Fig. 8.28 Note: The debugger breakpoint is on line 10.

code visualization

Fig. 8.29 Note: The debugger breakpoint is on line 11.

code visualization

Fig. 8.30 Note: The debugger breakpoint is on line 12.

code visualization

Fig. 8.31 Note: The debugger breakpoint is on line 14.

code visualization

Fig. 8.32 Note: The debugger breakpoint is on line 15.

code visualization

Fig. 8.33 Note: The debugger breakpoint is on line 22.