Title: Data Structures and Applications
1Data Structures and Applications
- Hao Jiang
- Computer Science Department
- Boston College
2Linked List
head
1
2
3
4
null
Node head Node v1 new Node(1) Node v2 new
Node(2) Node v3 new Node(3) Node v4 new
Node(4) head v1 v1.next v2 v2.next
v3 v3.next v4 v4.next null
class Node public int d public Node
next public Node(int d)
this.d d next null
3Some Properties
head
1
2
3
4
null
A list is dynamic the length of a list is
determined in the runtime. Some operations such
as insertion and deletion are cheaper than the
data structure array.
4Insert
head
1
2
3
4
null
100
Insert a new node at position 1.
5Insert in the Front
head
1
2
3
4
null
100
Insert a new node at position 0.
6Insert at the End
head
1
2
3
4
100
null
Insert a new node at the end.
7Delete
head
1
2
3
4
null
Delete a new node at position 1.
8Delete from the Front
head
1
2
3
4
null
Delete a node at position 0.
9Delete the Last Node
head
1
2
3
4
null
null
Delete the last node in the list.
10A List of Objects
head
obj1
obj2
obj3
obj4
null
class Node public Object d public
Node next public Node(Object d)
this.d d next null
11A More Accurate Illustration
obj1
obj2
obj3
obj4
head
null
A list of objects.
12List Class
public class List private Node head
public List() head null public
boolean isEmpty() return (head null)
public int length(Node h) if (h
null) return 0 return 1
length(h.next) public int length()
return length(head) public void
append() public void insert(int n,
Object d) public Object delete(int n)
public void print()
13Queue
- A queue is a first-in-first-out linear data
structure. - It supports two operations
- void enQueue(Object d)
- Object deQueue()
Data Out
Data In
14Stack
- A stack is a first-in-last-out linear data
structure. - It supports two operations
- void push(Object d)
- Object pop()
top of the stack
bottom of the stack
15Queue based on List
public class Queue private List list
public Queue() list new List()
public void enQueue(Object d)
list.append(d) public Object
deQueue() Object t list.getHead()
list.delete(0) return t.d
16Stack based on List
public class Stack private List list
public Stack() list new List()
public void push(Object d)
list.insert(0, d) public Object
pop() Node t list.getHead()
list.delete(0) return t.d
17Simulation
Gas Station
car1
car2
car3
car4
Top of the line
End of the line
How long does everyone have to wait? How long can
the line be?
18Language Parser
- We can use stacks to make language parsers.
- ( ( 1 2 ) / 3 ) ?
2 1
3
)
( (
1 2
3 3
/
1
The result is 1.
)
/ 3