...........................................................................................................................................................
Python中的顺序队是一种基于列表实现的队列数据结构,它遵循先进先出(FIFO)的原则。顺序队可以在队尾插入元素,并在队头删除元素。
...........................................................................................................................................................
..........................................................................................................................................................
顺序队列的元素进队是通过在队列的末尾添加元素实现的。
..........................................................................................................................................................
判空:
..........................................................................................................................................................
def empty(self):
return self.front==self.rear
进队:
..........................................................................................................................................................
def push(self,e):
assert self.rear != MaxSize -1
self.rear+=1 #指针后移为dipaly等方法提供落脚点
self.data[self.rear] = e #把None覆盖掉
出队:
..........................................................................................................................................................
def pop(self):
assert not self.empty()
self.front +=1 #并不是真的删了,只是打印时跳过它
return self.data[self.front]
得到队列第一个元素:
..........................................................................................................................................................
def gethead(self):
assert not self.empty()
return self.data[self.front+1]
长度:
..........................................................................................................................................................
def getsize(self):
return self.rear-self.front
以列表为基础的队列:
..........................................................................................................................................................
# class Queue:
# """先进先出"""
# def __init__(self):
# self.list=[]
# def is_empty(self):
# return self.list is []
# def push(self,data):
# """往队尾添加一个元素"""
# self.list.append(data)
# def pop(self):
# """弹出队头元素"""
# return self.list.pop(0)
# def gethead(self):
# """获知队头元素"""
# return self.list[0]
# def size(self):
# return len(self.list)
# if __name__=="__main__":
# q=Queue()
# q.push(0)
# q.push(1)
# q.push(2)
# q.push(3)
# print(q.size(),q.is_empty(),q.gethead(),q.pop())
自定义的顺序队列:
..........................................................................................................................................................
MaxSize=42
class Queue:
"""先进先出"""
def __init__(self,):
self.data=[None]*MaxSize
self.front=-1 #头
self.rear=-1 #尾
def empty(self):
return self.front==self.rear
def push(self,e):
assert self.rear != MaxSize -1
self.rear+=1 #指针后移为dipaly等方法提供落脚点
self.data[self.rear] = e #把None覆盖掉
def pop(self):
assert not self.empty()
self.front +=1 #并不是真的删了,只是打印时跳过它
return self.data[self.front]
def gethead(self):
assert not self.empty()
return self.data[self.front+1]
def dispaly(self):
for i in range(self.front+1,self.rear+1): #注意下标的范围
print(self.data[i],end=",")
def getsize(self):
return self.rear-self.front
if __name__=="__main__":
hh=Queue()
hh.push(2)
hh.push(3)
hh.pop()
hh.push(4)
hh.push(5)
print(hh.getsize())
hh.dispaly()
# 3
# 3,4,5,
# Process finished with exit code 0
...........................................................................................................................................................
Guff_hys_python数据结构,大数据开发学习,python实训项目-CSDN博客
...........................................................................................................................................................