so what's next? introduction to data structures two perspectives: abstract description...

Download So what's next? Introduction to data structures Two Perspectives: Abstract description (capabilities) Implementation(s) For structures: Stack Queue Deque

Post on 02-Apr-2015

212 views

Category:

Documents

0 download

Embed Size (px)

TRANSCRIPT

  • Slide 1

So what's next? Introduction to data structures Two Perspectives: Abstract description (capabilities) Implementation(s) For structures: Stack Queue Deque (maybe) Slide 2 Clicker quiz 12/3/13 CSE 1102 Fall 2013 Slide 3 The country with the red star on it is: A. Canada B. Sweden C. Latvia D. Finland E. None of the above Slide 4 A. "Finland" B. "is" C. "my" D. "home" E. None of the above Suppose I have a stack s that can store Strings, and I execute the following statements starting with an empty stack : 1. s.push("Finland"); 2. s.push("is"); 3. s.push("my"); 4. String w = s.peek(); 5. String x = s.pop(); 6. s.push("home"); 7. String y = s.pop(); 8. String z = s.pop(); What is the value of z? Slide 5 A. "Sweden" B. "is" C. "my" D. "neighbor" E. None of the above Suppose I have a queue q that can store Strings, and I execute the following statements starting with an empty queue : 1. q.enqueue("Sweden"); 2. q.enqueue("is"); 3. q.enqueue("my"); 4. String w = q.dequeue(); 5. String x = q.peek(); 6. q.enqueue("neighbor"); 7. String y = q.dequeue(); 8. String z = q.dequeue(); What is the value of z? Slide 6 Clicker questions and stuff 12/3/13 CSE 1102 Fall 2013 Slide 7 Abstract Data Types (1970s) Description of a data structure that includes only its operations, not its implementation In Java, ADTs are best modeled by interfaces Slide 8 Example ADT: Stack Operations: push(element) adds element to "top" of the stack pop returns the top element of the stack, which is removed from the stack peek returns the top element of the stack without changing the stack isEmpty returns true if stack is empty, false otherwise Slide 9 Stack intuitions examples in the world uses in computing Slide 10 A. "Iceland" B. "cool" C. true D. false E. None of the above Suppose I have a stack S that can store Strings, and I execute the following statements starting with an empty stack : 1. S.push("Iceland"); 2. S.push("is"); 3. String w = S.peek(); 4. String x = S.pop(); 5. S.push("cool"); 6. String y = S.pop(); 7. boolean z = S.isEmpty(); What is the value of z? Slide 11 Example ADT: Queue Operations: enqueue(element) adds element to "back" of the queue dequeue returns the "front" element of the queue, which is removed from the queue front returns the front element of the queue without changing the queue isEmpty returns true if queue is empty, false otherwise Slide 12 Queue intuitions examples in the world uses in computing Slide 13 A. "Sweden" B. "is" C. "my" D. "neighbor" E. None of the above Suppose I have a queue q that can store Strings, and I execute the following statements starting with an empty queue : 1. q.enqueue("Sweden"); 2. q.enqueue("is"); 3. q.enqueue("my"); 4. String w = q.dequeue(); 5. String x = q.peek(); 6. q.enqueue("neighbor"); 7. String y = q.dequeue(); 8. String z = q.dequeue(); What is the value of z? Slide 14 Suppose we have a class that acts as a Holder for Colors: public class ColorHolder { private Color _myColor; public ColorHolder(Color color) { _myColor = color; } public Color getValue(){ return _myColor; } public void setColor (Color col) { _myColor = col; } It might be useful to have a more general version, that could hold anything. Quick Topic 1: Generics Slide 15 Java allows us to define a class generically, with type declared at instantiation time: public class Holder { private ValType _myValue; public Holder(ValType value) { _myValue = value; } public ValType getValue(){ return _myValue; } public void setValue (ValType value) { _myValue = value; } To use this class, you need to declare and instantiate object with actual type: Holder currentColor; currentColor = new Holder (Color.red); More examples in Chapter 14! Slide 16 Example: Node class holds an element of some type, plus another Node of the same sort. public class Node { private ValType _myValue; private Node _next public Node(ValType value) { _myValue = value; _next = null; } public ValType getValue(){ return _myValue; } public void setValue (ValType value) { _myValue = value; } public Node getNext(){ return _next; } Since _next is a Node of the same sort, we can chain instances of these together. Slide 17 Suppose we want to diagram a set of instances and their relationships Answer: object (or instance) diagram Quick Topic 2: Object Diagrams For example, a sequence of two Nodes whose elements are Cars Slide 18 "syntax" Slide 19 Topic 3: Are you on this list? Bidhan Adhikari Devin Delaney Erming Gao Christopher Lawrence Jeffrey Metter Jonathan Rarey Slide 20 ADT: defined by capabilities In Java: a natural fit to Interfaces, e.g. public interface StackADT { void push(ElementType t); ElementType pop(); ElementType peek(); boolean isEmpty(); } Slide 21 So let's use Nodes to implement a Stack One instance variable, _top, which refers to a Node Stack fred = new Stack (); // create empty Stack // now add some stuff fred.push(new Car(Color.RED)); fred.push(new Car(Color.BLUE)); Slide 22 So let's use Nodes to implement a Stack ctd. One instance variable, _top, which refers to a Node // now pop something Car ethyl = fred.pop(); // what actually happens is this Slide 23 So let's use Nodes to implement a Stack public class Stack implements StackADT { private Node _top; public Stack() { _top = null; } public void push(EiType value) { Node nodeToPush = new Node (value); nodeToPush.setNext(_top); _top = nodeToPush; } public EiType pop() { EiType retVal = _top.getValue(); _top = _top.getNext(); return retVal; } public boolean isEmpty(){ return _top == null; }

Recommended

View more >