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实现监控windows服务并自动启动服务示例
Apr 17 Python
Python中replace方法实例分析
Aug 20 Python
django文档学习之applications使用详解
Jan 29 Python
python操作xlsx文件的包openpyxl实例
May 03 Python
基于python的图片修复程序(实现水印去除)
Jun 04 Python
详解Python 数据库的Connection、Cursor两大对象
Jun 25 Python
Python3.6实现根据电影名称(支持电视剧名称),获取下载链接的方法
Aug 26 Python
Windows平台Python编程必会模块之pywin32介绍
Oct 01 Python
Python多进程编程常用方法解析
Mar 26 Python
Python中的特殊方法以及应用详解
Sep 20 Python
Django celery异步任务实现代码示例
Nov 26 Python
pandas抽取行列数据的几种方法
Dec 13 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
PHP安装全攻略:APACHE
2006/10/09 PHP
PHP Mysql编程之高级技巧
2008/08/27 PHP
一道求$b相对于$a的相对路径的php代码
2010/08/08 PHP
php随机输出名人名言的代码
2012/10/07 PHP
php支付宝手机网页支付类实例
2015/03/04 PHP
javascript与asp.net(c#)互相调用方法
2009/12/13 Javascript
js实现字符串的16进制编码不加密
2014/04/25 Javascript
原生JS实现LOADING效果
2015/03/16 Javascript
基于Angularjs实现分页功能
2016/05/30 Javascript
JS判断输入字符串长度实例代码(汉字算两个字符,字母数字算一个)
2016/08/02 Javascript
JS获取字符对应的ASCII码实例
2017/09/10 Javascript
javascript 对象 与 prototype 原型用法实例分析
2019/11/11 Javascript
微信小程序wx.getUserInfo授权获取用户信息(头像、昵称)的实现
2020/08/19 Javascript
vue+element table表格实现动态列筛选的示例代码
2021/01/14 Vue.js
Python实现Dijkstra算法
2018/10/17 Python
python2.7实现邮件发送功能
2018/12/12 Python
Python图像的增强处理操作示例【基于ImageEnhance类】
2019/01/03 Python
pyqt 实现QlineEdit 输入密码显示成圆点的方法
2019/06/24 Python
用Pelican搭建一个极简静态博客系统过程解析
2019/08/22 Python
tensorflow 实现自定义梯度反向传播代码
2020/02/10 Python
香港百佳网上超级市场:PARKNSHOP.com
2020/06/10 全球购物
金蝶的一道SQL笔试题
2012/12/18 面试题
品学兼优的大学生自我评价
2013/09/20 职场文书
创业资金计划书
2014/02/06 职场文书
安全协议书范本
2014/04/21 职场文书
毕业生求职信
2014/06/10 职场文书
授权收款委托书
2014/09/23 职场文书
综治工作汇报材料
2014/10/27 职场文书
2014年财务工作总结范文
2014/11/11 职场文书
单位租房协议书范本
2014/12/04 职场文书
全国法制宣传日活动总结
2015/05/05 职场文书
银行工作心得体会范文
2016/01/23 职场文书
纪念建国70周年演讲稿
2019/07/19 职场文书
导游词之晋城蟒河
2019/12/12 职场文书
Python中X[:,0]和X[:,1]的用法
2021/05/10 Python
Pyqt5将多个类组合在一个界面显示的完整示例
2021/09/04 Python