Download Data Structure and Applications - Boston College Computer Science

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Data Structures and Applications
Hao Jiang
Computer Science Department
Boston College
Linked List
head
1
class Node {
public int d;
public Node next;
public Node(int d)
{
this.d = d;
next = null;
}
}
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;
Some 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.
Insert
head
1
2
3
100
Insert a new node at position 1.
4
null
Insert in the Front
head
1
2
3
100
Insert a new node at position 0.
4
null
Insert at the End
head
1
2
3
4
100
null
Insert a new node at the end.
Delete
head
1
2
3
Delete a new node at position 1.
4
null
Delete from the Front
head
1
2
3
Delete a node at position 0.
4
null
Delete the Last Node
head
1
2
3
null
Delete the last node in the list.
4
null
A List of Objects
head
obj1
obj2
obj3
class Node {
public Object d;
public Node next;
public Node(Object d)
{
this.d = d;
next = null;
}
}
obj4
null
A More Accurate Illustration
obj1
obj2
obj3
obj4
head
null
A list of objects.
List 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() {…}
…
}
Queue
• A queue is a first-in-first-out linear data structure.
• It supports two operations:
– void enQueue(Object d)
– Object deQueue()
Data
In
Data
Out
Stack
• 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
Queue 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;
}
}
Stack 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;
}
}
Simulation
• Application of the Queue
Gas Station
car1
car2
Top of the line
car3
car4
End of the line
How long does everyone have to wait?
How long can the line be?
Language Parser
• We can use stacks to make language parsers.
• ((1+2)/3)=?
2
1
((
3
3
/
/3
+
3
1+2
)
1
The result is
1.
)
Related documents