python顺序队列_队列的顺序存储结构

...........................................................................................................................................................

 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博客

...........................................................................................................................................................

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Guff_hys

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值