Beruflich Dokumente
Kultur Dokumente
Deque
1/25/06
Outline
1 Queues
What Is a Queue?
The Queue Abstract Data Type
Implementing a Queue in Python
Simulation: Hot Potato
Simulation: Printing Tasks
2 Deque
What Is a Deque?
The Deque Abstract Data Type
Implementing a Deque in Python
Palindrome-Checker
Outline
1 Queues
What Is a Queue?
The Queue Abstract Data Type
Implementing a Queue in Python
Simulation: Hot Potato
Simulation: Printing Tasks
2 Deque
What Is a Deque?
The Deque Abstract Data Type
Implementing a Deque in Python
Palindrome-Checker
items
Outline
1 Queues
What Is a Queue?
The Queue Abstract Data Type
Implementing a Queue in Python
Simulation: Hot Potato
Simulation: Printing Tasks
2 Deque
What Is a Deque?
The Deque Abstract Data Type
Implementing a Deque in Python
Palindrome-Checker
Outline
1 Queues
What Is a Queue?
The Queue Abstract Data Type
Implementing a Queue in Python
Simulation: Hot Potato
Simulation: Printing Tasks
2 Deque
What Is a Deque?
The Deque Abstract Data Type
Implementing a Deque in Python
Palindrome-Checker
1 c l a s s Queue:
2 d e f __init__(self):
3 self.items = []
4
5 d e f isEmpty(self):
6 r e t u r n self.items == []
7
8 d e f enqueue(self, item):
9 self.items.insert(0,item)
10
11 d e f dequeue(self):
12 r e t u r n self.items.pop()
13
14 d e f size(self):
15 r e t u r n len(self.items)
Outline
1 Queues
What Is a Queue?
The Queue Abstract Data Type
Implementing a Queue in Python
Simulation: Hot Potato
Simulation: Printing Tasks
2 Deque
What Is a Deque?
The Deque Abstract Data Type
Implementing a Deque in Python
Palindrome-Checker
Bill
After 5 passes,
Brad is eliminated pass to next person
Brad David
Kent Susan
Jane
enqueue dequeue
Go to the rear
(Pass the potato)
1 d e f hotPotato(namelist, N):
2
3 simqueue = Queue()
4 f o r name i n namelist:
5 simqueue.enqueue(name)
6
7 w h i l e simqueue.size() > 1:
8 f o r i i n range(N):
9 simqueue.enqueue(simqueue.dequeue())
10
11 simqueue.dequeue()
12
13 r e t u r n simqueue.dequeue()
Outline
1 Queues
What Is a Queue?
The Queue Abstract Data Type
Implementing a Queue in Python
Simulation: Hot Potato
Simulation: Printing Tasks
2 Deque
What Is a Deque?
The Deque Abstract Data Type
Implementing a Deque in Python
Palindrome-Checker
Lab Computers
1 c l a s s Printer:
2 d e f __init__(self, pages):
3 self.pagerate = pages
4 self.currentTask = None
5 self.timeRemaining = 0
6
7 d e f tick(self):
8 i f self.currentTask != None:
9 self.timeRemaining = self.timeRemaining - 1
10 i f self.timeRemaining == 0:
11 self.currentTask = None
12
13
14
15
16 d e f busy(self):
17 i f self.currentTask != None:
18 r e t u r n True
19 else:
20 r e t u r n False
21
22 d e f startNext(self,newtask):
23 self.currentTask = newtask
24 self.timeRemaining = newtask.getPages() \
25 * 60/self.pagerate
1 import random
2 c l a s s Task:
3 d e f __init__(self,time):
4 self.timestamp = time
5 self.pages = random.randrange(1,21)
6
7 d e f getStamp(self):
8 r e t u r n self.timestamp
9
10 d e f getPages(self):
11 r e t u r n self.pages
12
13 d e f waitTime(self, currenttime):
14 r e t u r n currenttime - self.timestamp
32
33
34 d e f newPrintTask():
35 num = random.randrange(1,181)
36 i f num == 180:
37 r e t u r n True
38 else:
39 r e t u r n False
Outline
1 Queues
What Is a Queue?
The Queue Abstract Data Type
Implementing a Queue in Python
Simulation: Hot Potato
Simulation: Printing Tasks
2 Deque
What Is a Deque?
The Deque Abstract Data Type
Implementing a Deque in Python
Palindrome-Checker
rear front
add to rear add to front
Outline
1 Queues
What Is a Queue?
The Queue Abstract Data Type
Implementing a Queue in Python
Simulation: Hot Potato
Simulation: Printing Tasks
2 Deque
What Is a Deque?
The Deque Abstract Data Type
Implementing a Deque in Python
Palindrome-Checker
Outline
1 Queues
What Is a Queue?
The Queue Abstract Data Type
Implementing a Queue in Python
Simulation: Hot Potato
Simulation: Printing Tasks
2 Deque
What Is a Deque?
The Deque Abstract Data Type
Implementing a Deque in Python
Palindrome-Checker
1 c l a s s Deque:
2 d e f __init__(self):
3 self.items = []
4
5 d e f isEmpty(self):
6 r e t u r n self.items == []
7
8 d e f addFront(self, item):
9 self.items.append(item)
10
11 d e f addRear(self, item):
12 self.items.insert(0,item)
13
14 d e f removeFront(self):
15 r e t u r n self.items.pop()
16
17 d e f removeRear(self):
18 r e t u r n self.items.pop(0)
19
20 d e f size(self):
21 r e t u r n len(self.items)
Outline
1 Queues
What Is a Queue?
The Queue Abstract Data Type
Implementing a Queue in Python
Simulation: Hot Potato
Simulation: Printing Tasks
2 Deque
What Is a Deque?
The Deque Abstract Data Type
Implementing a Deque in Python
Palindrome-Checker
A Deque
rear front
add to rear
r a d a r
items
rear front
r a d a r
Palindrome Checker
1 d e f palchecker(aString):
2 chardeque = Deque()
3
4 f o r ch i n aString:
5 chardeque.addRear(ch)
6
7 stillEqual = True
8
9 w h i l e chardeque.size() > 1 and stillEqual:
10 first = chardeque.removeFront()
11 last = chardeque.removeRear()
12 i f first != last:
13 stillEqual = False
14
15 r e t u r n stillEqual