1  ###  linkedQueueModule  ###
2  class linkedQueue(object):
3     class queueNode(object):
4         def __init__(self, item):
5              self.item = item
6              self.next = None
7      #-------------------------  
8      def __init__(self):
9          self.qhead = None
10         self.qtail = None
11         self.count = 0
12     #--------------------------
13     def isEmpty(self):
14         return self.qhead is None
15     #---------------------------
16     def length(self):
17         return self.count
18     #----------------------------
19     def enqueue(self, item):
20         newNode = self.queueNode(item)
21         if self.isEmpty():
22            self.qhead = newNode
23         else:
24             self.qtail.next = newNode
25         self.qtail = newNode
26         self.count += 1
27     #----------------------------
28     def dequeue(self, item, underflow):
29         if self.isEmpty():
30             underflow = True
31         else:
32             unserflow = False
33             itemNode = self.qhead
34             if self.qhead is self.qtail:
35                self.qtail = None
36             self.qhead = self.qhead.next
37             item = itemNode.item
38             del itemNode
39             self.count -= 1
40         return item, underflow
41     #------------------------------
42     def printQueue(self):
43        if not self.isEmpty() is True:
44             ptr = self.qhead
45             while ptr:
46                  print(ptr.item, end = " ")
47                  ptr = ptr.next
48     #----------------------------------

