File tree Expand file tree Collapse file tree 2 files changed +63
-0
lines changed
src/abstract_structures/queues Expand file tree Collapse file tree 2 files changed +63
-0
lines changed Original file line number Diff line number Diff line change 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 )
You can’t perform that action at this time.
0 commit comments