File tree 1 file changed +55
-0
lines changed
1 file changed +55
-0
lines changed Original file line number Diff line number Diff line change
1
+ # Implementation of the Queue ADT using a linked list.
2
+ class Queue :
3
+ # Creates an empty queue.
4
+ def __init__ ( self ):
5
+ self ._qhead = None
6
+ self ._qtail = None
7
+ self ._count = 0
8
+
9
+ # Returns True if the queue is empty.
10
+ def isEmpty ( self ):
11
+ return self ._qhead is None
12
+
13
+ # Returns the number of items in the queue.
14
+ def __len__ ( self ):
15
+ return self ._count
16
+
17
+ # Adds the given item to the queue.
18
+ def enqueue ( self , item ):
19
+ node = _QueueNode ( item )
20
+ if self .isEmpty ():
21
+ self ._qhead = node
22
+ else :
23
+ self ._qtail .next = node
24
+ self ._qtail = node
25
+ self ._count += 1
26
+
27
+ # Removes and returns the first item in the queue.
28
+ def dequeue ( self ):
29
+ assert not self .isEmpty (), "Cannot dequeue from an empty queue."
30
+ node = self ._qhead
31
+ if self ._qhead is self ._qtail :
32
+ self ._qtail = None
33
+ self ._qhead = self ._qhead .next
34
+ self ._count -= 1
35
+ return node .item
36
+
37
+ # Private storage class for creating the linked list ndoes.
38
+ class _QueueNode ( object ):
39
+ def __init__ ( self , item ):
40
+ self .item = item
41
+ self .next = None
42
+
43
+ if __name__ == '__main__' :
44
+ Q = Queue ()
45
+ Q .enqueue ( 28 )
46
+ #Q.enqueue( 19 )
47
+ #Q.enqueue( 45 )
48
+ #Q.enqueue( 13 )
49
+ #Q.enqueue( 7 )
50
+
51
+ for i in range ( len (Q ) ):
52
+ cur_item = Q .dequeue ()
53
+ print cur_item ,
54
+ print ''
55
+ print Q ._qhead , Q ._qtail
You can’t perform that action at this time.
0 commit comments