Skip to content

Commit 0dd174b

Browse files
author
Mari Wahl
committed
abstracted structure edited in the book
1 parent 864418e commit 0dd174b

File tree

2 files changed

+63
-0
lines changed

2 files changed

+63
-0
lines changed

book/book_second_edition.pdf

-22.8 KB
Binary file not shown.
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
#!/usr/bin/env python
2+
3+
__author__ = "bt3"
4+
5+
6+
class Queue(object):
7+
8+
def __init__(self):
9+
self.in_stack = []
10+
self.out_stack = []
11+
12+
def _transfer(self):
13+
while self.in_stack:
14+
self.out_stack.append(self.in_stack.pop())
15+
16+
def enqueue(self, item):
17+
return self.in_stack.append(item)
18+
19+
def dequeue(self):
20+
if not self.out_stack:
21+
self._transfer()
22+
if self.out_stack:
23+
return self.out_stack.pop()
24+
else:
25+
return "Queue empty!"
26+
27+
def size(self):
28+
return len(self.in_stack) + len(self.out_stack)
29+
30+
def peek(self):
31+
if not self.out_stack:
32+
self._transfer()
33+
if self.out_stack:
34+
return self.out_stack[-1]
35+
else:
36+
return "Queue empty!"
37+
38+
def __repr__(self):
39+
if not self.out_stack:
40+
self._transfer()
41+
if self.out_stack:
42+
return '{}'.format(self.out_stack)
43+
else:
44+
return "Queue empty!"
45+
46+
def isEmpty(self):
47+
return not (bool(self.in_stack) or bool(self.out_stack))
48+
49+
50+
if __name__ == '__main__':
51+
queue = Queue()
52+
print("Is the queue empty? ", queue.isEmpty())
53+
print("Adding 0 to 10 in the queue...")
54+
for i in range(10):
55+
queue.enqueue(i)
56+
print("Queue size: ", queue.size())
57+
print("Queue peek : ", queue.peek())
58+
print("Dequeue...", queue.dequeue())
59+
print("Queue peek: ", queue.peek())
60+
print("Is the queue empty? ", queue.isEmpty())
61+
62+
print("Printing the queue...")
63+
print(queue)

0 commit comments

Comments
 (0)