4.3 Stacks, Queues, and Linked Lists - Penn Engineering · 2013-03-22 · 2 Data Types and Data...
Transcript of 4.3 Stacks, Queues, and Linked Lists - Penn Engineering · 2013-03-22 · 2 Data Types and Data...
![Page 1: 4.3 Stacks, Queues, and Linked Lists - Penn Engineering · 2013-03-22 · 2 Data Types and Data Structures Data types. Set of values and operations on those values. Some are built](https://reader035.fdocuments.us/reader035/viewer/2022070902/5f5ae711c81ecc724c04b6da/html5/thumbnails/1.jpg)
4.3 Stacks, Queues, and Linked Lists
Introduction to Programming in Java: An Interdisciplinary Approach · Robert Sedgewick and Kevin Wayne · Copyright © 2002–2010 · 3/21/2013 8:59:11 PM
![Page 2: 4.3 Stacks, Queues, and Linked Lists - Penn Engineering · 2013-03-22 · 2 Data Types and Data Structures Data types. Set of values and operations on those values. Some are built](https://reader035.fdocuments.us/reader035/viewer/2022070902/5f5ae711c81ecc724c04b6da/html5/thumbnails/2.jpg)
2
Data Types and Data Structures
Data types. Set of values and operations on those values.
Some are built into the Java language: int, double[], String, …
Most are not: Complex, Picture, Stack, Queue, ST, Graph, …
Data structures.
Represent data or relationships among data.
Some are built into Java language: arrays.
Most are not: linked list, circular list, tree, sparse array, graph, …
this lecture
![Page 3: 4.3 Stacks, Queues, and Linked Lists - Penn Engineering · 2013-03-22 · 2 Data Types and Data Structures Data types. Set of values and operations on those values. Some are built](https://reader035.fdocuments.us/reader035/viewer/2022070902/5f5ae711c81ecc724c04b6da/html5/thumbnails/3.jpg)
3
Collections
Fundamental data types.
Set of operations (add, remove, test if empty) on generic data.
Intent is clear when we insert.
Which item do we remove?
Stack. [LIFO = last in first out]
Remove the item most recently added.
Ex: Pez, cafeteria trays, Web surfing.
Queue. [FIFO = first in, first out]
Remove the item least recently added.
Ex: Guitar Hero (RingBuffer)
Symbol table.
Remove the item with a given key.
Ex: Phone book.
http://www.gatreasures.com/index.php?main_page=page&id=7
http://www.zdnet.com/apple-fans-queue-for-ipads-uk-launch-3040089083/
http://www.otreva.com/web-design-scranton-phonebook-vs-internet-marketing/
![Page 4: 4.3 Stacks, Queues, and Linked Lists - Penn Engineering · 2013-03-22 · 2 Data Types and Data Structures Data types. Set of values and operations on those values. Some are built](https://reader035.fdocuments.us/reader035/viewer/2022070902/5f5ae711c81ecc724c04b6da/html5/thumbnails/4.jpg)
11
Linked Lists
![Page 5: 4.3 Stacks, Queues, and Linked Lists - Penn Engineering · 2013-03-22 · 2 Data Types and Data Structures Data types. Set of values and operations on those values. Some are built](https://reader035.fdocuments.us/reader035/viewer/2022070902/5f5ae711c81ecc724c04b6da/html5/thumbnails/5.jpg)
12
Sequential vs. Linked Allocation
Sequential allocation. Put items one after another.
TOY: consecutive memory cells.
Java: array of objects.
Linked allocation. Include in each object a link to the next one.
TOY: link is memory address of next item.
Java: link is reference to next item.
Key distinctions.
Array: random access, fixed size.
Linked list: sequential access, variable size.
"Carol"
null
C0
C1
-
-
C2
C3
"Alice"
CA
C4
C5
-
-
C6
C7
-
-
C8
C9
"Bob"
C0
CA
CB
value addr
"Alice"
"Bob"
B0
B1
"Carol"
-
B2
B3
-
-
B4
B5
-
-
B6
B7
-
-
B8
B9
-
-
BA
BB
value addr
array (B0)
linked list (C4)
get ith item
get next item
![Page 6: 4.3 Stacks, Queues, and Linked Lists - Penn Engineering · 2013-03-22 · 2 Data Types and Data Structures Data types. Set of values and operations on those values. Some are built](https://reader035.fdocuments.us/reader035/viewer/2022070902/5f5ae711c81ecc724c04b6da/html5/thumbnails/6.jpg)
From the point of view of a particular object:
all of these structures look the same.
Multiply-linked data structures. Many more possibilities.
13
Singly-Linked Data Structures
sequential (this lecture)
parent-link tree rho
general case
circular
![Page 7: 4.3 Stacks, Queues, and Linked Lists - Penn Engineering · 2013-03-22 · 2 Data Types and Data Structures Data types. Set of values and operations on those values. Some are built](https://reader035.fdocuments.us/reader035/viewer/2022070902/5f5ae711c81ecc724c04b6da/html5/thumbnails/7.jpg)
14
Linked list.
A recursive data structure.
An item plus a pointer to another linked list (or empty list).
Unwind recursion: linked list is a sequence of items.
Node data type.
A reference to a String.
A reference to another Node.
Linked Lists
public class Node {
public String item;
public Node next;
}
Alice Bob Carol
first
item next
special pointer value null terminates list
null
![Page 8: 4.3 Stacks, Queues, and Linked Lists - Penn Engineering · 2013-03-22 · 2 Data Types and Data Structures Data types. Set of values and operations on those values. Some are built](https://reader035.fdocuments.us/reader035/viewer/2022070902/5f5ae711c81ecc724c04b6da/html5/thumbnails/8.jpg)
15
Building a Linked List
Node third = new Node();
third.item = "Carol";
third.next = null;
Node second = new Node();
second.item = "Bob";
second.next = third;
Node first = new Node();
first.item = "Alice";
first.next = second;
"Carol"
null
C0
C1
-
-
C2
C3
"Alice"
CA
C4
C5
-
-
C6
C7
-
-
C8
C9
"Bob"
C0
CA
CB
-
-
CC
CD
-
-
CE
CF
Value addr
Carol null
item next
third
C0 third
main memory
Bob
second
CA second
Alice
first
C4 first
![Page 9: 4.3 Stacks, Queues, and Linked Lists - Penn Engineering · 2013-03-22 · 2 Data Types and Data Structures Data types. Set of values and operations on those values. Some are built](https://reader035.fdocuments.us/reader035/viewer/2022070902/5f5ae711c81ecc724c04b6da/html5/thumbnails/9.jpg)
16
Stack Push (Insert at Front): Linked List Implementation
Node second = first;
first.item = "of";
first.next = second;
first = new Node();
best the was it
first
of
second
best the was it
first second
best the was it
first
second
best the was it
first
![Page 10: 4.3 Stacks, Queues, and Linked Lists - Penn Engineering · 2013-03-22 · 2 Data Types and Data Structures Data types. Set of values and operations on those values. Some are built](https://reader035.fdocuments.us/reader035/viewer/2022070902/5f5ae711c81ecc724c04b6da/html5/thumbnails/10.jpg)
17
Stack Pop (Remove from Front): Linked List Implementation
first = first.next;
return item;
best the was it
first
of
best the was it
first
best the was it
first
of
garbage-collected
String item = first.item;
"of"
![Page 11: 4.3 Stacks, Queues, and Linked Lists - Penn Engineering · 2013-03-22 · 2 Data Types and Data Structures Data types. Set of values and operations on those values. Some are built](https://reader035.fdocuments.us/reader035/viewer/2022070902/5f5ae711c81ecc724c04b6da/html5/thumbnails/11.jpg)
18
Stack: Linked List Implementation
public class LinkedStackOfStrings {
private Node first = null;
private class Node {
private String item;
private Node next;
}
public boolean isEmpty() { return first == null; }
public void push(String item) {
Node second = first;
first = new Node();
first.item = item;
first.next = second;
}
public String pop() {
String item = first.item;
first = first.next;
return item;
}
}
"inner class"
stack and linked list contents after 4th push operation
![Page 12: 4.3 Stacks, Queues, and Linked Lists - Penn Engineering · 2013-03-22 · 2 Data Types and Data Structures Data types. Set of values and operations on those values. Some are built](https://reader035.fdocuments.us/reader035/viewer/2022070902/5f5ae711c81ecc724c04b6da/html5/thumbnails/12.jpg)
20
Stack Data Structures: Tradeoffs
Two data structures to implement Stack data type.
Array.
Every push/pop operation take constant time.
But… must fix maximum capacity of stack ahead of time.
Linked list.
Every push/pop operation takes constant time.
Memory is proportional to number of items on stack.
But… uses extra space and time to deal with references.
to be or not
0 1 2 3 4 5 6 7 8 9
a[]
N
![Page 13: 4.3 Stacks, Queues, and Linked Lists - Penn Engineering · 2013-03-22 · 2 Data Types and Data Structures Data types. Set of values and operations on those values. Some are built](https://reader035.fdocuments.us/reader035/viewer/2022070902/5f5ae711c81ecc724c04b6da/html5/thumbnails/13.jpg)
21
List Processing Challenge 1
Q. What does the following code fragment do?
for (Node x = first; x != null; x = x.next) {
StdOut.println(x.item);
}
Alice Bob Carol null
item next
first
![Page 14: 4.3 Stacks, Queues, and Linked Lists - Penn Engineering · 2013-03-22 · 2 Data Types and Data Structures Data types. Set of values and operations on those values. Some are built](https://reader035.fdocuments.us/reader035/viewer/2022070902/5f5ae711c81ecc724c04b6da/html5/thumbnails/14.jpg)
22
List Processing Challenge 2
Q. What does the following code fragment do?
Node last = new Node();
last.item = StdIn.readString();
last.next = null;
Node first = last;
while (!StdIn.isEmpty()) {
last.next = new Node();
last = last.next;
last.item = StdIn.readString();
last.next = null;
}
Alice Bob Carol null
item next
first
last