Key to CSE143 Midterm, Spring 2010 handout #21 1. Method Call Output Produced ------------------------------------------------ mystery(7); 7 mystery(38); 3, 2 mystery(749); 7, 1, 0 mystery(-6842); 6, 2, 1, 2 mystery(954023); 9, 2, 1, 0, 2, 0 2. One possible solution appears below. public void parenthesize(String str, int n) { if (n < 0) { throw new IllegalArgumentException(); } else if (n == 0) { System.out.print(str); } else { // n > 0 System.out.print("("); parenthesize(str, n - 1); System.out.print(")"); } } 3. One possible solution appears below. public boolean hasOddEven() { boolean odd = false; boolean even = false; ListNode current = front; while (current != null && (!odd || !even)) { if (current.data % 2 == 0) { even = true; } else { odd = true; } current = current.next; } return odd && even; } 4. Statement Output ------------------------------------------------------------ var1.method1(); Peak 1/Cliff 3/Peak 3 var2.method1(); Peak 1/Gorge 3 var3.method1(); Peak 1/Hill 3 var4.method1(); Peak 1/Gorge 3 var5.method1(); Peak 1/Peak 3 var6.method1(); compiler error var1.method2(); compiler error var2.method2(); Gorge 2 var3.method2(); compiler error var1.method3(); Cliff 3/Peak 3 var2.method3(); Gorge 3 var3.method3(); Hill 3 ((Gorge)var6).method1(); runtime error ((Cliff)var1).method1(); Peak 1/Cliff 3/Peak 3 ((Cliff)var3).method2(); compiler error ((Cliff)var4).method1(); Peak 1/Gorge 3 ((Gorge)var3).method2(); runtime error ((Hill)var3).method2(); Hill 2 ((Cliff)var4).method3(); Gorge 3 ((Peak)var6).method3(); Cliff 3/Peak 3 5. One possible solution appears below. public static void mirror(Stack<Integer> s) { Queue<Integer> q = new LinkedQueue<Integer>(); while (!s.isEmpty()) q.enqueue(s.pop()); while (!q.isEmpty()) s.push(q.dequeue()); while (!s.isEmpty()) q.enqueue(s.pop()); for (int i = 0; i < q.size(); i++) { int n = q.dequeue(); s.push(n); q.enqueue(n); } while (!s.isEmpty()) q.enqueue(s.pop()); while (!q.isEmpty()) s.push(q.dequeue()); } 6. One possible solution appears below. public ArrayIntList reverseCopy() { ArrayIntList result = new ArrayIntList(elementData.length); for (int i = 0; i < size; i++) { result.elementData[i] = elementData[size - 1 - i]; } result.size = size; return result; }
Stuart Reges
Last modified: Fri Sep 16 16:16:07 PDT 2011