SLIDE 1
Linked List Implementation Data-structure-palooza Introduction to - - PowerPoint PPT Presentation
Linked List Implementation Data-structure-palooza Introduction to - - PowerPoint PPT Presentation
Linked List Implementation Data-structure-palooza Introduction to Markov Chaining Checkout LinkedLists project from SVN Understanding the engineering trade-offs when storing data Efficient ways to store data based on how well use it
SLIDE 2
SLIDE 3
Understanding the engineering trade-offs when storing data
SLIDE 4
Efficient ways to store data based on how
we’ll use it
The main theme for the last 1/6 of the course So far we’ve seen ArrayLists
- Fast addition to end of list
st
- Fast access to any existing position
- Slow inserts to and deletes from middle of list
SLIDE 5
What if we have to add/remove data from a
list frequently?
LinkedLists support this:
- Fast insertion and removal of elements
Once we know where they go
- Slow access to arbitrary elements
“random access”
SLIDE 6
void addFirst(E element) void addLast(E element) E getFirst() E getLast() E removeFirst() E removeLast() What about accessing the middle of the list?
- LinkedList<E> implements Iterable<E>
SLIDE 7
SLIDE 8
Enhanced For Loop What Compiler Generates
for (String s : list) { // do something } Iterator<String> iter = list.iterator(); while (iter.hasNext()) { String s = iter.next(); // do something }
SLIDE 9
A simplified version, with just the essentials Won’t implement the java.util.List interface Will have the usual linked list behavior
- Fast insertion and removal of elements
Once we know where they go
- Slow random access
SLIDE 10
The only blood these contracts are signed in is from me cutting my hand trying to open the d@^mned CD case.
SLIDE 11
Boil down data types (e.g., lists) to their
essential operations
Choosing a data structure for a project then
becomes:
- Identify the operations needed
- Identify the abstract data type that most efficient
supports those operations
Goal: that you understand several basic
abstract data types and when to use them
SLIDE 12
Array List Linked List Stack Queue Set Map
Implementations for all of these are provided by the Java Collections Framework in the java.util package. Q1
SLIDE 13
Op Operati ations
- ns
Prov
- vide
ided Array List Efficie cienc ncy Linke nked d List Efficie cienc ncy Random access O(1) O(n) Add/remove item O(n) O(1) Q1
SLIDE 14
A last-in, first-out (LIFO) data structure Real-world stacks
- Plate dispensers in the cafeteria
- Pancakes!
Some uses:
- Tracking paths through a maze
- Providing “unlimited undo” in an application
Op Operati ations
- ns
Prov
- vide
ided Efficie cienc ncy Push item O(1) Pop item O(1)
Implemented by Stack, LinkedList, and ArrayDeque in Java
Q1
SLIDE 15
A first-in, first-out (FIFO) data structure Real-world queues
- Waiting line at the BMV
- Character on Star Trek TNG
Some uses:
- Scheduling access to shared resource (e.g., printer)
Op Operati ations
- ns
Prov
- vide
ided Efficie cienc ncy Enqueue item O(1) Dequeue item O(1)
Implemented by LinkedList and ArrayDeque in Java
Q1
SLIDE 16
Unorder
rdered ed collections wi without t duplic icate ates
Real-world sets
- Students
- Collectibles
Some uses:
- Quickly checking if an item is in a collection
Op Operati ations
- ns
HashS hSet et Tr TreeSet Add/remove item O(1) O(lg n) Contains? O(1) O(lg n)
Can hog space Sorts items!
Q1
SLIDE 17
Associate keys with va
values es
Real-world “maps”
- Dictionary
- Phone book
Some uses:
- Associating student ID with transcript
- Associating name with high scores
Op Oper erati ations
- ns
Has ashM hMap ap Tr Tree eeMap ap Insert key-value pair O(1) O(lg n) Look up value for key O(1) O(lg n)
Can hog space Sorts items by key!
Q1
SLIDE 18
Demonstration
SLIDE 19
Input: a text file
the skunk jumped over the stump the stump jumped over the skunk the skunk said the stump stunk and the stump said the skunk stunk
Output: a randomly
generated list of words that is “like” the original input in a well-defined way
SLIDE 20
Gather statistics on word patterns by building
an appropriate data structure
Use the data structure to generate random
text that follows the discovered patterns
SLIDE 21
Input: a text file
the e skunk nk jumped mped ove ver the stump the e stump p jumped mped ove ver the skunk nk the e skunk nk said the stump mp stunk k and d the stump mp said the skunk nk stunk nk Prefix Suffix ffixes NONWORD the the skunk (4), stump (4) skunk jumped, said, stunk, the jumped
- ver (2)
- ver
the (2) stump jumped, said, stunk, the said the (2) stunk and, NONWORD and the
SLIDE 22
Input: a text file
the e skunk nk jumped mped ove ver the stump the e stump p jumped mped ove ver the skunk nk the e skunk nk said the stump mp stunk k and d the stump mp said the skunk nk stunk nk Prefi fix Suffixe fixes NW NW the NW the skunk the skunk jumped, said, the, stunk skunk jumped
- ver
jumped over the
- ver the
stump, skunk the stump the, jumped, stunk, said …
SLIDE 23
n=1:
the skunk the skunk jumped over the skunk stunk the skunk stunk
n=2:
the skunk said the stump stunk and the stump jumped over the skunk jumped
- ver the skunk stunk
Note: it’s also
possible to hit the max before you hit the last nonword.
SLIDE 24
For the prefixes? For the set of suffixes? To relate them?
Prefi fix Suffixe fixes NW NW the NW the skunk the skunk jumped, said, the, stunk skunk jumped
- ver
jumped over the
- ver the
stump, skunk the stump the, jumped, stunk, said …
SLIDE 25
Let me know whether you want to:
- Work alone on Markov project
- Work in a pair on Markov project