队列、栈、堆的区别与联系并用Python实现

本文介绍了队列、栈和堆的区别与联系,并使用Python实现。队列遵循先进先出原则,栈则为先进后出。文章详细讲解了栈的列表和deque实现,队列的列表实现,以及堆的概念和Python中的实现。
摘要由CSDN通过智能技术生成

队列、栈、堆的区别与联系并用Python实现


1. 引言

我们先来谈一谈线性表,毕竟栈(堆栈)和队列是两种操作受限的线性表,堆就是树了。

线性表:

线性表是一种线性结构,它是一个含有n≥0个结点的有限序列,同一个线性表中数据元素类型相同并且满足“一对一”的逻辑关系。

“一对一”的逻辑关系是指:

  • 对于其中的结点,有且仅有一个开始结点没有前驱&但有一个后继结点
  • 有且仅有一个终端结点没有后继&但有一个前驱节点
  • 其余所有的结点都有且仅有一个前驱和后继

2. 队列和栈

2.1 原理和特点

队列和栈都是线性结构,队列(stack)为先进后出,栈(queue)为先进后出,我们通过它们的结构来看一下:

image-20210116041318705 image-20210116041400738
  • 栈的插入和删除操作只允许在尾端进行,栈中称为:栈顶,也满足FIFO(First in Last Out)
  • 队列的只允许在队尾插入数据,在队头删除数据,也满足FIFO(First in Last Out)

image-20210116043712880

2.2 实现

2.2.1 栈的实现一:列表

List列表是Python中的基础数据结构,我们可以使用List的append()pop()方法来模拟入栈、出栈操作。

stack = []  # 模拟一个栈
# 入栈
stack.append(2)
print(stack)
stack.append(4)
print(stack)
stack.append(6)
print(stack)
# 查看栈顶元素
top = stack[-1]
print('栈顶元素为:{}'.format(top))
# 出栈
for i in range(len(stack)):
    t = stack.pop()
    print('出栈元素为:',t)
    if not stack:
        print('此时栈为:[空]')
    else:
        print('此时栈中还有 {} 个元素'.format(len(stack)))
# 输出
[2]
[2, 4]
[2, 4, 6]
栈顶元素为:6
出栈元素为: 6
此时栈中还有 2 个元素
出栈元素为: 4
此时栈中还有 1 个元素
出栈元素为: 2
此时栈为:[]

入栈顺序为2、4、6,出栈顺序为6、4、2,符合栈的特性:先入后出。

2.2.2 栈的实现二:双向队列

Python

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值