数据结构(python)--实现队列

根据队列的特性,队列内元素遵循先入先出的原则,我们可以基于列表实现一个队列,由于队列的实现比较简单,这里只实现其基本功能,其余功能由读者自己实现。

这里介绍一个容易被忽视的函数,由于部分队列需要实现翻转功能,这个函数应该可以帮上你,这个函数就是

reverse()函数

举个简单的例子:

这里我们定义一个列表:

li = [1,2,3,4,5,'a','abc']

通过调用reverse()函数,直接将列表翻转,翻转与列表元素无关,并不会改变列表内元素,只是改变其位置

li,reverse()

结果如下:

回归正题,我们基于列表简单实现一个队列,

首先,我们定义一个类,并初始化它

class Queue:
    def __init__(self):
        self.items = []

然后,对于入队,为了方便操作以及减少代码量,我们选择列表尾作为队尾,使用append()函数以达到入队的效果,对于出队,我们选择列表表首作为出队位置,并使用pop()函数实现出队,另外插一句,对于pop()函数,可以传入一个下标作为指定的删除对象,不传入下标时默认为列表最后一个元素,代码如下:

 # 入队
    def push(self, val):
        return self.items.append(val)

    # 出队
    def top(self):
        if self.is_empty():
            print("栈空!")
            exit(0)
        else:
            return self.pop(0)

最后,完整的代码如下:这里加了几个简单的测试用例

# 队列是限制在两端进行插入删除操作的线性表,允许进行存入的一端称为  队尾,允许进行删除的一端称为  队首
# 队列只能在队头和队尾进行数据操作
# 队列模型具有 先进先出 或者 后进后出 的规律

"""
对于列表的翻转:
    li = [1,2,3,4,5,6,'a','asd']
    li.reverse()
    li = ['asd','a',6,5,4,3,2,1]
对于reverse函数只是对列表进行翻转

"""


# 队列的顺序存储--基于列表


# 定义队列
class Queue:
    # 初始化
    def __init__(self):
        self.items = []

    # 判空
    def is_empty(self):
        return self.items is None

    # 入队
    def push(self, val):
        return self.items.append(val)

    # 出队
    def top(self):
        if self.is_empty():
            print("栈空!")
            exit(0)
        else:
            return self.pop(0)

    # 输出
    def show(self):
        for i in self.items:
            print(i, end=" ")
        print()

    # 翻转
    def xuan(self):
        return self.items.reverse()


if __name__ == "__main__":
    line = Queue()
    for i in range(10):
        line.push(i)
    line.show()
    line.xuan()
    line.show()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值