Upload
audrey-miller
View
220
Download
0
Embed Size (px)
Citation preview
Queues
Queue Q = x0 x1 x2 x3 … xn-1 n = # elements
A queue is a list but the nodes are only accessed first-in-first-out (FIFO).
Functions:
createEmptyQueue() returns a newly created empty queue
front(Q) returns the first node of Q
dequeue(Q) returns and removes the first node of Q
enqueue(Q, x) returns Q with x added as the last element
isEmptyQueue(Q) returns true if Q is empty and false if it is not
Homework 3a
• Describe how to implement a queue using an array (assume it will never have more than 100 elements).
• Do the five queue functions.• Describe how to implement a queue using
an set of nodes (this queue will have no number of element limit).
• Do the five queue functions.
Queue – Array
Nam
eLast: Sm
artF
irstNam
e: JoeS
tudentNum
ber: 8S
SN: 123-34-1112G
rade: 95
Nam
eLast: Sm
artF
irstNam
e: JoeS
tudentNum
ber: 8S
SN: 123-34-1112G
rade: 95
0 321 654
int front = the front of the queue
int end = the end of the queue
Nam
eLast: Sm
artF
irstNam
e: JoeS
tudentNum
ber: 8S
SN: 123-34-1112G
rade: 95
Nam
eLast: Sm
artF
irstNam
e: JoeS
tudentNum
ber: 8S
SN: 123-34-1112G
rade: 95
in this case front = 1 end = 5
createEmptyQueue()
declare an array of max size
array q[100]
int front = 0
int end = 0
front(Q)
if isEmptyQueue(q)
return null
else
return q[front]
dequeue(Q)
temp = front
front = (front + 1) modulo 100
return q[temp]
enqueue(Q, x)
q[end] = x
end = (end + 1) modulo 100
isEmptyQueue(Q)
if front = end
return true
else
return false
Queue – Linked-List
q
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
null
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
Queue – Linked-List
f
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
null
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
e
createEmptyQueue()
Declare pointers to type node called f and e
f null
e null
front(Q)
f
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
null
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
return node pointed to by f
e
dequeue(Q)
f
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
null
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
e
dequeue(Q)
f
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
null
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
temp = f
temp
e
dequeue(Q)
f
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
null
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
f = f.next
temp
e
dequeue(Q)
f
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
null
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
temp.next = nullreturn temp
temp
null
e
enqueue(Q, x)single pointer
q
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
null
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
null
x
enqueue(Q, x)- sp
q
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
null
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
null
x
temp
temp = qtemp = temp.nextuntil temp.next = null
enqueue(Q, x)- sp
q
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
null
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
null
x
temp
enqueue(Q, x)- sp
q
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
null
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
x
temp
temp.next = x
enqueue(Q, x)
f
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
null
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
null
xe
enqueue(Q, x)
f
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
null
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
xe
e.next = x
enqueue(Q, x)
f
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
null
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
xe
e = x
isEmptyQueue(Q)
return f == null
Linked List Searchhead
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
null
NameLast: SmartFirstName: Joe
StudentNumber: 8SSN: 123-34-1112
Grade: 95
Speed of List Search
• O(n) for when implemented as a linked-list
• O(lg n) possible if implemented as an array– How?
Speed of List Search
1
Speed of List Search
2
Speed of List Search
3
Speed of List Search
4
Speed of List Search
5
Speed of List Search -- Array
• It took 5 compares
• There were 29 elements
• lg(16) < lg(29) < lg(32)
• 4 < lg(29) < 5
• What if there were 1,000,000 elements?
• How many compares would it take?
Speed of List Search -- Array
• lg(1000000) = 20• In 20 compares we can search a list of 1,000,000
elements.• But we can’t always use an array to hold the data
because we may not know the size limit of the database.
• How can we dynamically represent the data in such a way that we can still get searches in lg(n)?
Trees
Trees
• Root
• Nodes
• Edges
• Leaves
• Height of a Tree
• Depth of a Node
• Parent / Child
Binary Tree
Binary Search Tree
54
30
93
25 7910
5 60
86
44
72
35
84
21
Binary Search Tree
Tree T is a binary search tree made up of n elements: x0 x1 x2 x3 … xn-1 Functions:createEmptyTree() returns a newly created empty binary treedelete(T, p) removes the node pointed to by p from the tree Tinsert(T, p) returns T with the node pointed to by p added in
the proper location search(T, key) returns a pointer to the node in T that has a key
that matched key returns null if key is not found traverse(T) prints the contents of T in orderisEmptyTree(T) returns true if T is empty and false if it is not
Homework 4
• Describe how to implement a binary search tree using a set of nodes (this tree will have no number of element limit).
• Do the six BST functions.• Can you determine how to implement a
binary search tree using an array (assume it will never have more than 100 elements)?
• Consider the six BST functions.