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<Integer> s1, Stack<Integer> s2) { if (s1.size() != s2.size()) { return false; } else { Stack<Integer> s3 = new ArrayStack<Integer>(); 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