Presentation is loading. Please wait.

Presentation is loading. Please wait.

Chapter 3 List Stacks and Queues. Data Structures Data structure is a representation of data and the operations allowed on that data. Data structure is.

Similar presentations


Presentation on theme: "Chapter 3 List Stacks and Queues. Data Structures Data structure is a representation of data and the operations allowed on that data. Data structure is."— Presentation transcript:

1 Chapter 3 List Stacks and Queues

2 Data Structures Data structure is a representation of data and the operations allowed on that data. Data structure is a representation of data and the operations allowed on that data.

3 Why Abstract? Specify the operations of the data structure and leave implementation details to later Specify the operations of the data structure and leave implementation details to later in Java use an interface to specify operations in Java use an interface to specify operations many, many different ADTs many, many different ADTs picking the right one for the job is an important step in design picking the right one for the job is an important step in design "Get your data structures correct first, and the rest of the program will write itself." -Davids Johnson "Get your data structures correct first, and the rest of the program will write itself." -Davids Johnson High level languages often provide built in ADTs, High level languages often provide built in ADTs, the C++ STL, the Java standard library the C++ STL, the Java standard library

4 The Core Operations Every Collection ADT should provide a way to: Every Collection ADT should provide a way to: add an item add an item remove an item remove an item find, retrieve, or access an item find, retrieve, or access an item Many, many more possibilities Many, many more possibilities is the collection empty is the collection empty make the collection empty make the collection empty give me a sub set of the collection give me a sub set of the collection and on and on and on… and on and on and on… Many different ways to implement these items each with associated costs and benefits Many different ways to implement these items each with associated costs and benefits

5 Implementing ADTs when implementing an ADT the operations and behaviors are already specified when implementing an ADT the operations and behaviors are already specified think Java interface think Java interface Implementer’s first choice is what to use as the internal storage container for the concrete data type Implementer’s first choice is what to use as the internal storage container for the concrete data type the internal storage container is used to hold the items in the collection the internal storage container is used to hold the items in the collection often an implementation of an ADT often an implementation of an ADT initially slim pickings for choice of storage containers: arrays anyone? initially slim pickings for choice of storage containers: arrays anyone?

6 The Grand Tour Why study ADTs? Why study ADTs? Why reimplement some of them? Why reimplement some of them? How many of you will actually go out and create your own linked list ADT from scratch? How many of you will actually go out and create your own linked list ADT from scratch? Remember, the primary goal is to learn how to learn how to use and create ADTs Remember, the primary goal is to learn how to learn how to use and create ADTs also learn the behavior of some of the more conventional ADTs also learn the behavior of some of the more conventional ADTs

7 Bags and Sets Simplest ADT is a Bag Simplest ADT is a Bag items can be added, removed, accessed items can be added, removed, accessed no implied order to the items no implied order to the items duplicates allowed duplicates allowed Set Set same as a bag, except duplicate elements not allowed same as a bag, except duplicate elements not allowed union, intersection, difference, subset union, intersection, difference, subset

8 Lists Items have a position in this Collection Items have a position in this Collection Random access or not? Random access or not? Array Lists Array Lists internal storage container is native array internal storage container is native array Linked Lists Linked Lists public class Node {private Object data; private Node next; } first last

9 Collection with access only to the last element inserted Collection with access only to the last element inserted Last in first out Last in first out insert/push insert/push remove/pop remove/pop top top make empty make empty Stacks Top Data4 Data3 Data2 Data1

10 Queues Collection with access only to the item that has been present the longest Collection with access only to the item that has been present the longest Last in last out or first in first out Last in last out or first in first out enqueue, dequeue, front enqueue, dequeue, front priority queues and deque priority queues and deque Data4Data3Data2Data1 Front Back

11 Stacks and Queues in the Java Collection API No queue in the Java collections ADT No queue in the Java collections ADT Stack extends Vector (which is almost exactly like ArrayList) Stack extends Vector (which is almost exactly like ArrayList) Hmmm? Hmmm? One reason the Java Collections Library is often said to be broken One reason the Java Collections Library is often said to be broken no Queue in Collection API no Queue in Collection API

12 Trees Similar to a linked list Similar to a linked list public class TreeNode {private Object data; private TreeNode left; private TreeNode right; } Root

13 Other Types of Trees Binary Search Trees Binary Search Trees sorted values sorted values Heaps Heaps sorted via a different algorithm sorted via a different algorithm AVL and Red-Black Trees AVL and Red-Black Trees binary search trees that stay balanced binary search trees that stay balanced Splay Trees Splay Trees B Trees B Trees

14 HashTables Take a key, apply function Take a key, apply function f(key) = hash value f(key) = hash value store data or object based on hash value store data or object based on hash value Sorting O(N), access O(1) if a perfect hash function and enough memory for table Sorting O(N), access O(1) if a perfect hash function and enough memory for table how deal with collisions? how deal with collisions?

15 Other ADTs Maps Maps a.k.a. Dictionary a.k.a. Dictionary Collection of items with a key and associated values Collection of items with a key and associated values similar to hash tables, and hash tables often used to implement Maps similar to hash tables, and hash tables often used to implement Maps Graphs Graphs Nodes with unlimited connections between other nodes Nodes with unlimited connections between other nodes Sparse vectors and sparse matrices Sparse vectors and sparse matrices

16 The Java Collection Interface boolean isEmpty() int size() boolean add(Object x) boolean contains(Object x) boolean remove(Object x) void clear() Object[] toArray() Iterator iterator()

17 Interface?????

18 Generic Containers ADTs or Collection classes should be generic ADTs or Collection classes should be generic only write them once, hold lots or all types of data only write them once, hold lots or all types of data Java achieves genericity through inheritance and polymorphism Java achieves genericity through inheritance and polymorphism ADTs have an internal storage container ADTs have an internal storage container What is storing the stuff, What is storing the stuff, implementation vs. abstraction implementation vs. abstraction in Java, usually holds Objects. Why? in Java, usually holds Objects. Why?

19

20 Example - ArrayList


Download ppt "Chapter 3 List Stacks and Queues. Data Structures Data structure is a representation of data and the operations allowed on that data. Data structure is."

Similar presentations


Ads by Google