Key to CSE143 Midterm, Spring 2009 handout #22
1. Method Call Output Produced
------------------------------------------------
mystery(5); *
mystery(15); **
mystery(304); *--
mystery(9247); *--*
mystery(43269); -*--*
2. One possible solution appears below.
public String substring(String s, int i, int j) {
if (i < 0 || i > j || j > s.length())
throw new IllegalArgumentException();
else if (i == j)
return "";
else
return s.charAt(i) + substring(s, i + 1, j);
}
3. One possible solution appears below.
public boolean isConsecutive() {
if (front == null) {
return true;
} else {
ListNode current = front;
while (current.next != null) {
if (current.next.data != current.data + 1) {
return false;
}
current = current.next;
}
return true;
}
}
4. Statement Output
------------------------------------------------------------
var1.method1(); Water 1
var2.method1(); Earth 1/Fire 1
var3.method1(); Fire 1
var4.method1(); compiler error
var5.method1(); Water 1
var6.method1(); Fire 1
var1.method2(); Fire 2/Water 1
var2.method2(); Fire 2/Earth 1/Fire 1
var3.method2(); Fire 2/Fire 1
var4.method2(); compiler error
var5.method2(); Fire 2/Water 1
var6.method2(); Fire 2/Fire 1
((Water)var4).method2(); runtime error
((Fire)var4).method2(); Fire 2/Earth 1/Fire 1
((Air)var6).method3(); Air 3
((Earth)var1).method3(); compiler error
((Water)var1).method3(); Water 3
((Water)var2).method3(); runtime error
((Earth)var1).method2(); Fire 2/Water 1
((Water)var6).method3(); runtime error
5. One possible solution appears below.
public void reverseByN(Queue q, int n) {
Stack s = new ArrayStack();
int times = q.size() / n;
int extra = q.size() % n;
for (int i = 0; i < times; i++) {
for (int j = 0; j < n; j++)
s.push(q.dequeue());
while (!s.isEmpty())
q.enqueue(s.pop());
}
for (int i = 0; i < extra; i++)
s.push(q.dequeue());
while (!s.isEmpty())
q.enqueue(s.pop());
}
6. One possible solution appears below.
public ArrayIntList fromCounts() {
ArrayIntList result = new ArrayIntList();
int size2 = 0;
for (int i = 0; i < size; i += 2) {
for (int j = 0; j < elementData[i]; j++) {
result.elementData[size2] = elementData[i + 1];
size2++;
}
}
result.size =size2;
return result;
}
Stuart Reges
Last modified: Fri Sep 16 16:16:07 PDT 2011