python 队列

队列的特征是:先进先出
应用场景:消息通信、多进程间的协同、多线程间的协同等
在队列中需要设计的实例属性:head节点、tail节点
需要设计的实例方法有两个:分别是入队队列enqueue出队队列dequeue
 1 class Node(object):     #节点,包括两个属性,一个是节点的值,一个是节点的下一个指向
 2     def __init__(self,value):
 3         self.value = value   #节点的值
 4         self.next = None     #节点的下一个指向
 5 
 6 class Queue(object):        #队列这个类
 7     def __init__(self):     #初始化这个队列
 8         self.first = None      #队列的首尾指向的节点都是None,初始化
 9         self.last = None
10 
11     def enter(self,n):
12         packNode = Node(n)      #创建Node新节点实例,值为n
13         if self.first == None:  #如果首指向为空
14             self.first = packNode       #将首指向的节点赋为传进来的节点
15             self.last = self.first      #并且将尾指向的节点赋为
16         else:
17             self.last.next = packNode       #如果队列不为空,就将新的节点赋值到目前last的下一个位置
18             self.last = packNode            #然后移动last指向,将last指向到刚才新增的节点
19 
20     def quit(self):
21         if self.first == None:
22             return None
23         else:
24             tmp = self.first.value          #如果队列中存在值,则把队列中第一个的值赋值给tmp
25             self.first = self.first.next    #将first的指向下一个,变为first指向
26             return tmp
27 if __name__ == '__main__':
28     print("------------队列开始--------")
29     q = Queue()
30     # n1 = Node(1)
31     # n2 = Node(2)
32     # n3 = Node(3)
33     q.enter(1)
34     q.enter(2)
35     q.enter(3)
36     print(q.quit())
37     print(q.quit())
38     print(q.quit())
39     # print(q)
原文地址:https://www.cnblogs.com/kunpengv5/p/ee920e521cd8e5a3da481df55779de6c.html