Python 实现数据结构-堆栈和队列的操作方法


Posted in Python onJuly 17, 2019

队、栈和链表一样,在数据结构中非常基础一种数据结构,同样他们也有各种各样、五花八门的变形和实现方式。但不管他们形式上怎么变,队和栈都有其不变的最基本的特征,我们今天就从最基本,最简单的实现来看看队列和堆栈。

不管什么形式的队列,它总有的一个共同的特点就是“先进先出”。怎么理解呢?就像是超市排队结账,先排队的人排在队的前面,先结账出队。这是队列的特征。

而堆栈则和队列相反,它是“先进后出”,怎么理解呢?基本所有的编辑器都有一个撤销功能,就是按Ctrl+Z。当你写了一段文字,第一次按Ctrl+Z,消失的是你最后写的文字,第二次按Ctrl+Z,同样消失的是当前编辑器内最后写的文字。这就是一个堆栈结构的应用例子。

好,介绍完概念我们来看一下代码如何实现这两种数据结构,这篇文章我们采用最简单方式——通过Python原生的数据类型列表来实现。上篇文章,我们介绍了链表,通过链表我们同样可以实现堆栈和队列,感兴趣的朋友不妨尝试一下。

队列

首先,我们来定义一个队列类:

class Queue():
 def __init__(self):
 self.__list = list()

接下来,我们给队列类添加一些方法:

•判断队列是否为空

def isEmpty(self):
 return self.__list == []

•入队 

def push(self, data):
 self.__list.append(data)

•出队

def pop(self):
 if self.isEmpty():
  return False
 return self.__list.pop(0)

•定义len()函数和print()操作类方法 

def __len__(self):
 return len(self.__list)
 def __str__(self):
 if self.isEmpty():
  return ''
 return ' '.join([str(x) for x in self.__list])

OK,到这里,一个最简单的队列就实现啦,自己实例化一个队列测试一下吧

下面我们来看堆栈

堆栈

堆栈的实现和队列类似,同样有入栈和出栈操作,我们直接上代码:

class Stack():
 def __init__(self):
 self.__list = list()

 def isEmpty(self):
 return self.__list == []

 def push(self, data):
 self.__list.append(data)
 
 def pop(self):
 if self.isEmpty():
  return False
 return self.__list.pop()

 def __len__(self):
 return len(self.__list)

 def __str__(self):
 if self.isEmpty():
  return ''
 return ' '.join([str(x) for x in self.__list])

可以看到,堆栈和队列的类实现基本相同,差别仅在出队和出栈的时候,队列是弹出第一个元素,而堆栈则是弹出最后一个元素。这也是队列和堆栈最本质的区别。

总结

以上所述是小编给大家介绍的Python 实现数据结构-堆栈和队列的操作方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
Python编写检测数据库SA用户的方法
Jul 11 Python
Python3读取文件常用方法实例分析
May 22 Python
python在windows下创建隐藏窗口子进程的方法
Jun 04 Python
Python使用smtplib模块发送电子邮件的流程详解
Jun 27 Python
Python读写Json涉及到中文的处理方法
Sep 12 Python
Django 如何获取前端发送的头文件详解(推荐)
Aug 15 Python
Django框架实现的简单分页功能示例
Dec 04 Python
Python实现八皇后问题示例代码
Dec 09 Python
TensorFlow MNIST手写数据集的实现方法
Feb 05 Python
python3 正则表达式基础廖雪峰
Mar 25 Python
jupyter notebook的安装与使用详解
May 18 Python
Python控制台输出俄罗斯方块移动和旋转功能
Apr 18 Python
Python 实现数据结构-循环队列的操作方法
Jul 17 #Python
Python图像处理PIL各模块详细介绍(推荐)
Jul 17 #Python
python中dict使用方法详解
Jul 17 #Python
python中tkinter的应用:修改字体的实例讲解
Jul 17 #Python
python对矩阵进行转置的2种处理方法
Jul 17 #Python
使用Filter过滤python中的日志输出的实现方法
Jul 17 #Python
纯python进行矩阵的相乘运算的方法示例
Jul 17 #Python
You might like
Zend Guard一些常见问题解答
2008/09/11 PHP
php 小乘法表实现代码
2009/07/16 PHP
Pain 全世界最小最简单的PHP模板引擎 (普通版)
2011/10/23 PHP
PhpStorm配置Xdebug调试的方法步骤
2019/02/02 PHP
js 颜色选择器(兼容firefox)
2009/03/05 Javascript
jquery.pagination.js 无刷新分页实现步骤分享
2012/05/23 Javascript
推荐5 个常用的JavaScript调试技巧
2015/01/08 Javascript
javascript实现仿腾讯游戏选择
2015/05/14 Javascript
JavaScript中的acos()方法使用详解
2015/06/14 Javascript
AngularJS 中的指令实践开发指南(一)
2016/03/20 Javascript
基于jQuery实现仿微博发布框字数提示
2016/07/27 Javascript
JQuery Ajax WebService传递参数的简单实例
2016/11/02 Javascript
JavaScript实现二分查找实例代码
2017/02/22 Javascript
vue.js在标签属性中插入变量参数的方法
2018/03/06 Javascript
微信小程序3种位置API的使用方法详解
2019/08/05 Javascript
扫微信小程序码实现网站登陆实现解析
2019/08/20 Javascript
Python简单实现子网掩码转换的方法
2016/04/13 Python
Python实现可获取网易页面所有文本信息的网易网络爬虫功能示例
2018/01/15 Python
python读取ini配置的类封装代码实例
2020/01/08 Python
OpenCV4.1.0+VS2017环境配置的方法步骤
2020/07/09 Python
基于python实现计算两组数据P值
2020/07/10 Python
纯CSS3实现的井字棋游戏
2020/11/25 HTML / CSS
欧洲有机婴儿食品最大的市场:Organic Baby Food(供美国和加拿大)
2018/03/28 全球购物
小学教师培训感言
2014/02/11 职场文书
新闻发布会主持词
2014/03/28 职场文书
环保标语口号
2014/06/13 职场文书
ktv好的活动方案
2014/08/15 职场文书
创建绿色社区汇报材料
2014/08/22 职场文书
2014高三学生考试作弊检讨书
2014/12/14 职场文书
音乐课外活动总结
2015/05/09 职场文书
煤矿施工安全协议书
2016/03/22 职场文书
大学学生会主席竞选稿怎么写?
2019/08/19 职场文书
使用tensorflow 实现反向传播求导
2021/05/26 Python
手把手教你从零开始react+antd搭建项目
2021/06/03 Javascript
python迷宫问题深度优先遍历实例
2021/06/20 Python
Go语言基础map用法及示例详解
2021/11/17 Golang