1.00 Tutorial #8 1 Agenda • Quiz 2 • Matrix • Queue – What is a queue – Queue methods • Stack – What is a stack – Stack methods 2 Quiz 2 • Quiz 2: 1.5 hours • Quiz Review: 1.5 hours 3 Exercise 1: Matrix • • • • 3x1+2x2=13 5x1+3x2=21 Find the answer for x1, x2 and print out the result; You can construct a 2x2 matrix A 3 2 5 3 and a 2x1matrix (vector) b 13 21 so that Ax=b, resolve x1, x2; You can download needed classes (Lecture 22, Matrix.java, GElim.java) from the web, but you should write your own main class/method. 4 What is a Stack • A stack is a type of simple object container • Objects are inserted and removed in the last-in first-out (LIFO) fashion – Think of a stack as a can of tennis balls - the last ball inserted in the can is the first one taken out • Methods: public interface Stack { public boolean isEmpty(); public void push(Object o); public Object pop() throws EmptyStackException; public void clear(); } 5 Stack Methods • void push(Object item) – Pushes an item into the stack – Note that the item can be any object type (String, user-defined class, etc.) • Object pop() – Pops the top item of the stack and returns it to the caller – Note that what returned is a generic Object • How do we convert it into the original data type? • void clear() – Empty the stack • boolean isEmpty() – Return true if the stack is empty and false if otherwise 6 What is a Queue • A queue is another simple type of object container • Objects are inserted in and removed from the queue in the first-in first-out (FIFO) fashion – Think of a queue as a waiting line in the toll booth • Methods public interface Queue { public boolean isEmpty(); public void add(Object o); public Object remove() throws NoSuchElementException; public void clear(); } 7 Queue Methods • void add(Object item) – Insert an item into the queue – Note that the item can be any object type (String, user-defined class, etc.) • Object remove() – Remove the first item from the queue and return it to the caller – If the queue is empty, throw NoSuchElementException – Note that what is returned is a generic Object • How do we convert it into the original data type? • void clear() – Empty the queue • boolean isEmpty() – Return true if the queue is empty and false if otherwise 8 Exercise 2a: ice cream cone queues sugar cones cones in a queue with random order waffle cones plain cones Your mission: Remove cones from the random queue and put each one into the correct cone-type queue 9 Cone Class Public class Cone { public static final String sugar = “sugar”; public static final String plain = “plain”; public static final String waffle = “waffle”; String coneType; public Cone(String coneType) { this.conType=coneType;} } 10 2a:Write a method and a main method public static void sortIceCreamQueue(ArrayQueue originalQ, ArrayQueue sugarQ, ArrayQueue waffleQ, ArrayQueue plainQ) { //write your code here… … } public static void main(String args[]) { ArrayQueue a = new ArrayQueue(); //adding cones to a in random order //for instance, sugar, plain, waffle, waffle, sugar a.add(new Cone(“sugar”)); //…. ArrayQueue s = new ArrayQueue(); ArrayQueue w = new ArrayQueue(); ArrayQueue p = new ArrayQueue(); sortIceCreamQueue(a, s, w, p); if (a.isEmpty()) System.out.println(“I have finished sorting the original queue”); } 11 public static void sortIceCreamQueue(ArrayQueue originalQ, ArrayQueue sugarQ, ArrayQueue waffleQ, ArrayQueue plainQ) { while (!originalQ.isEmpty()) { Cone c = (Cone)originalQ.remove(); if (c.coneType.equals(sugar)) sugarQ.add(c); else if (c.coneType.equals(plain)) plainQ.add(c); else waffleQ.add(c); } } 12 Exercise 2b: ice cream cone stacks sugar cones cones in a queue with random order waffle cones plain cones Your mission: Remove from random queue and put into correct cone-type stack 13 2b:Write a method and a main method public static void sortIceCreamQueue2(ArrayQueue originalQ, ArrayStack sugarStack, ArrayStack waffleStack, ArrayStack plainStack) { //write your code here… … } public static void main(String args[]) { ArrayQueue a = new ArrayQueue(); //adding cones to a in random order //for instance, sugar, plain, waffle, waffle, sugar ArrayStack s = new ArrayStack(); ArrayStack w = new ArrayStack(); ArrayStack p = new ArrayStack(); sortIceCreamQueue2(a, s, w, p); if (a.isEmpty()) System.out.println(“I have finished sorting the original queue”); } 14