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
Question 2
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());
Question 3
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
Fig. 8.12 Note: The debugger breakpoint is on line 5.¶
Fig. 8.13 Note: The debugger breakpoint is on line 6.¶
Fig. 8.14 Note: The debugger breakpoint is on line 8.¶
Fig. 8.15 Note: The debugger breakpoint is on line 9.¶
Fig. 8.16 Note: The debugger breakpoint is on line 10.¶
Fig. 8.17 Note: The debugger breakpoint is on line 12.¶
Output
three
Question 4
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
Fig. 8.18 Note: The debugger breakpoint is on line 5.¶
Fig. 8.19 Note: The debugger breakpoint is on line 6.¶
Fig. 8.20 Note: The debugger breakpoint is on line 8.¶
Fig. 8.21 Note: The debugger breakpoint is on line 9.¶
Fig. 8.22 Note: The debugger breakpoint is on line 11.¶
Fig. 8.23 Note: The debugger breakpoint is on line 12.¶
Output
delta
Question 5
Question 6
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());
Question 7
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
Fig. 8.24 Note: The debugger breakpoint is on line 4.¶
Fig. 8.25 Note: The debugger breakpoint is on line 5.¶
Fig. 8.26 Note: The debugger breakpoint is on line 7.¶
Fig. 8.27 Note: The debugger breakpoint is on line 9.¶
Fig. 8.28 Note: The debugger breakpoint is on line 10.¶
Fig. 8.29 Note: The debugger breakpoint is on line 11.¶
Fig. 8.30 Note: The debugger breakpoint is on line 12.¶
Fig. 8.31 Note: The debugger breakpoint is on line 14.¶
Fig. 8.32 Note: The debugger breakpoint is on line 15.¶
Fig. 8.33 Note: The debugger breakpoint is on line 22.¶