Key to CSE143 Midterm, Spring 2011 handout #22
1. Method Call Output Produced
------------------------------------------------
mystery(1); 1
mystery(3); 3, 1, 3
mystery(4); 4, 2, 1, 2, 4
mystery(6); 6, 3, 1, 3, 6
mystery(12); 12, 6, 3, 1, 3, 6, 12
2. One possible solution appears below.
public String replace(String s, char target, char replacement) {
if (s.length() == 0)
return "";
else {
String rest = replace(s.substring(1), target, replacement);
if (s.charAt(0) == target)
return replacement + rest;
else
return s.charAt(0) + rest;
}
}
3. One possible solution appears below.
public int minGap() {
if (front == null || front.next == null) {
return 0;
} else {
int min = front.next.data - front.data;
ListNode current = front.next;
while (current.next != null) {
int gap = current.next.data - current.data;
if (gap < min) {
min = gap;
}
current = current.next;
}
return min;
}
}
4. Statement Output
------------------------------------------------------------
var1.method2(); Pig 2
var2.method2(); Dog 2
var3.method2(); Dog 2
var4.method2(); compiler error
var5.method2(); Horse 2
var6.method2(); Pig 2
var1.method3(); Cat 3/Pig 2
var2.method3(); compiler error
var3.method3(); compiler error
var4.method3(); compiler error
var5.method3(); Cat 3/Horse 2
var6.method3(); Cat 3/Pig 2
((Pig)var5).method1(); runtime error
((Cat)var3).method3(); Cat 3/Dog 2
((Cat)var4).method1(); compiler error
((Pig)var1).method1(); Horse 1/Dog 2
((Horse)var4).method1(); Horse 1/Dog 2
((Cat)var2).method3(); runtime error
((Horse)var3).method1(); runtime error
((Dog)var4).method2(); Horse 2
5. One possible solution appears below.
public boolean equals(Stack s1, Stack s2) {
if (s1.size() != s2.size()) {
return false;
} else {
Stack s3 = new ArrayStack();
boolean same = true;
while (same && !s1.isEmpty()) {
int num1 = s1.pop();
int num2 = s2.pop();
if (num1 != num2)
same = false;
s3.push(num1);
s3.push(num2);
}
while (!s3.isEmpty()) {
s2.push(s3.pop());
s1.push(s3.pop());
}
return same;
}
}
6. One possible solution appears below.
public void removeFront(int n) {
if (n < 0 || n > size)
throw new IllegalArgumentException();
for (int i = n; i < size; i++)
elementData[i - n] = elementData[i];
size -= n;
}
Stuart Reges
Last modified: Fri Sep 16 16:16:07 PDT 2011