
正文
利用Python实现 队列的算法
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
以下内容都是来自“悟空“大神的讲解,听他的视频课,利用Python实现堆栈的算法,自己做了一些小总结,可能会存在自己理解的一些误区,
1.栈的实现

队列的特征是先进先出,同我们生活中的队列具有相同的特性:先排队的先办事。队列的应用场景非常多,例如消息通信、多进程间的协同、多线程间的协同等。
在算法前,我们需要先知道3个值 1、节点(节点作用是 进行一个指针(假设的)一个指向 2.就是现在这个位置上的元素的值) 2.还需要知道一个头,一个尾,就如上面两个一个head,就对应下面的代码中的first, tail就对应代码下面last, 只有知道了这三个内容,才好理解如果写
进入队列的图片 ,就是在后面在新加一个元素,然后指向在往后面移动

退出队列的图片,退出队列就是head的指向往前移动,而tail的指向不变

#coding=utf-8
class Node(object):#先获取到节点,节点有两个作用,1.进行一个指针(假设的)一个指向,
# 2,。就是现在这个位置上的元素的值
def __init__(self,val):
self.next=None #指针的下一个,用于指向内容,先给初始化设置为空
self.val=val #val是它原本的值,class Queue(object):
def __init__(self): #初始化两个属性,分别代表first头和last
self.first=None
self.last=None
def enter(self,n): #开始进队列
#实例节点
n = Node(n) # 指定在第5个位置上
#进队列时需要先判断队列是不是空,如何判断,通过判断first是不是空
if self.first==None:
self.first=n #为什么为空了还要把值赋值给first
self.last=self.first
else:#进队列,first不变,last的位置向后移动一个
self.last.next=n #指针指向后面一个 #把下移后的指向给lst.netx
self.last=n #赋值值给last def quit(self): #退出队列,
#退出队列就是
if self.first==None:
return None
else:
tmp=self.first.val #获取项目的值
self.first=self.first.next
return tmp
def allQuit(self):#全部退出
Lists=[] #用户保存数据
while self.first!=None:
Lists.append(self.first.val) #把每一次的值存入到一个list中
self.first=self.first.next
return Listsif __name__=="__main__":
q=Queue()
q.enter(1)
q.enter(2)
q.enter(3) # print q.quit()
# print q.quit()
# print q.quit() print q.allQuit()








