Python算法之栈(stack)的实现


Posted in Python onAugust 18, 2014

本文以实例形式展示了Python算法中栈(stack)的实现,对于学习数据结构域算法有一定的参考借鉴价值。具体内容如下:

1.栈stack通常的操作:

Stack() 建立一个空的栈对象
push() 把一个元素添加到栈的最顶层
pop() 删除栈最顶层的元素,并返回这个元素
peek()  返回最顶层的元素,并不删除它
isEmpty()  判断栈是否为空
size()  返回栈中元素的个数

2.简单案例以及操作结果:

Stack Operation      Stack Contents   Return Value
 s.isEmpty()   []        True
 s.push(4)   [4] 
 s.push('dog')   [4,'dog'] 
 s.peek()   [4,'dog']    'dog'
 s.push(True)   [4,'dog',True] 
 s.size()   [4,'dog',True]   3
 s.isEmpty()   [4,'dog',True]   False
 s.push(8.4)   [4,'dog',True,8.4] 
 s.pop()       [4,'dog',True]   8.4
 s.pop()       [4,'dog']     True
 s.size()   [4,'dog']     2

这里使用python的list对象模拟栈的实现,具体代码如下:

#coding:utf8
class Stack:
  """模拟栈"""
  def __init__(self):
    self.items = []
    
  def isEmpty(self):
    return len(self.items)==0 
  
  def push(self, item):
    self.items.append(item)
  
  def pop(self):
    return self.items.pop() 
  
  def peek(self):
    if not self.isEmpty():
      return self.items[len(self.items)-1]
    
  def size(self):
    return len(self.items) 
s=Stack()
print(s.isEmpty())
s.push(4)
s.push('dog')
print(s.peek())
s.push(True)
print(s.size())
print(s.isEmpty())
s.push(8.4)
print(s.pop())
print(s.pop())
print(s.size())

感兴趣的读者可以动手测试一下本文所述实例代码,相信会对大家学习Python能有一定的收获。

Python 相关文章推荐
python实现在无须过多援引的情况下创建字典的方法
Sep 25 Python
python动态参数用法实例分析
May 25 Python
在Python中移动目录结构的方法
Jan 31 Python
python直接访问私有属性的简单方法
Jul 25 Python
Python实现的根据IP地址计算子网掩码位数功能示例
May 23 Python
python 创建一个空dataframe 然后添加行数据的实例
Jun 07 Python
python与caffe改变通道顺序的方法
Aug 04 Python
python 重命名轴索引的方法
Nov 10 Python
python导包的几种方法(自定义包的生成以及导入详解)
Jul 15 Python
Django通过dwebsocket实现websocket的例子
Nov 15 Python
python各层级目录下import方法代码实例
Jan 20 Python
完美解决Pycharm中matplotlib画图中文乱码问题
Jan 11 Python
Python实现partial改变方法默认参数
Aug 18 #Python
Python实现发送email的几种常用方法
Aug 18 #Python
Python内置数据类型详解
Aug 18 #Python
Python3基础之输入和输出实例分析
Aug 18 #Python
一个计算身份证号码校验位的Python小程序
Aug 15 #Python
基于Python的身份证号码自动生成程序
Aug 15 #Python
Python异常处理总结
Aug 15 #Python
You might like
PHP向浏览器输出内容的4个函数总结
2014/11/17 PHP
PHP遍历XML文档所有节点的方法
2015/03/12 PHP
PHP大文件分片上传的实现方法
2018/10/28 PHP
jQuery插件实现屏蔽单个元素使用户无法点击
2013/04/12 Javascript
jQuery对下拉框,单选框,多选框的操作
2014/02/21 Javascript
jquery遍历checkbox的注意事项说明
2014/02/21 Javascript
Jquery 监视按键,按下回车键触发某方法的实现代码
2014/05/11 Javascript
基于css3新属性transform及原生js实现鼠标拖动3d立方体旋转
2016/06/12 Javascript
js改变style样式和css样式的简单实例
2016/06/28 Javascript
HTML5canvas 绘制一个圆环形的进度表示实例
2016/12/16 Javascript
vue-cli webpack 开发环境跨域详解
2017/05/18 Javascript
JS操作时间 - UNIX时间戳的简单介绍(必看篇)
2017/08/16 Javascript
阿望教你用vue写扫雷小游戏
2020/01/20 Javascript
Node.js中文件系统fs模块的使用及常用接口
2020/03/06 Javascript
Vue实现背景更换颜色操作
2020/07/17 Javascript
微信小程序实现电影App导航和轮播
2020/11/30 Javascript
[02:26]2016国际邀请赛8月3日开战 中国军团出征西雅图
2016/08/02 DOTA
用python + hadoop streaming 分布式编程(一) -- 原理介绍,样例程序与本地调试
2014/07/14 Python
Python微信库:itchat的用法详解
2017/08/14 Python
Python实现JSON反序列化类对象的示例
2018/01/31 Python
python 使用值来排序一个字典的方法
2018/11/16 Python
python3 批量获取对应端口服务的实例
2019/07/25 Python
Django文件存储 自己定制存储系统解析
2019/08/02 Python
Django将默认的SQLite更换为MySQL的实现
2019/11/18 Python
使用pandas 将DataFrame转化成dict
2019/12/10 Python
python元组拆包实现方法
2021/02/28 Python
HTML5中视频音频的使用详解
2017/07/07 HTML / CSS
个人思想理论学习的自我鉴定
2013/11/30 职场文书
会计学专业学生的求职信范文
2014/01/27 职场文书
大学新生军训自我鉴定
2014/03/18 职场文书
鲁滨孙漂流记读书笔记
2015/06/30 职场文书
外出学习心得体会范文
2016/01/18 职场文书
教师信息技术学习心得体会
2016/01/21 职场文书
学习党史心得体会2016
2016/01/23 职场文书
Mysql基础知识点汇总
2021/05/26 MySQL
Python图像处理库PIL详细使用说明
2022/04/06 Python