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<Integer> q, int n) { Stack<Integer> s = new ArrayStack<Integer>(); 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