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 相关文章推荐
简单的Python2.7编程初学经验总结
Apr 01 Python
python冒泡排序简单实现方法
Jul 09 Python
Python的Flask开发框架简单上手笔记
Nov 16 Python
玩转python selenium鼠标键盘操作(ActionChains)
Apr 12 Python
ansible作为python模块库使用的方法实例
Jan 17 Python
动态规划之矩阵连乘问题Python实现方法
Nov 27 Python
Python视频爬虫实现下载头条视频功能示例
May 07 Python
python 统计文件中的字符串数目示例
Dec 24 Python
浅析Django中关于session的使用
Dec 30 Python
Python post请求实现代码实例
Feb 28 Python
python数据抓取3种方法总结
Feb 07 Python
Python中with上下文管理协议的作用及用法
Mar 18 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使用curl和正则表达式抓取网页数据示例
2014/04/13 PHP
php冒泡排序、快速排序、快速查找、二维数组去重实例分享
2014/04/24 PHP
php简单判断两个字符串是否相等的方法
2015/07/13 PHP
PHP中call_user_func_array回调函数的用法示例
2016/11/26 PHP
ThinkPHP中调用PHPExcel的实现代码
2017/04/08 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
2020/02/18 PHP
JavaScript入门教程(12) js对象化编程
2009/01/31 Javascript
input 和 textarea 输入框最大文字限制的jquery插件
2011/10/27 Javascript
使用jquery实现的一个图片延迟加载插件(含图片延迟加载原理)
2014/06/05 Javascript
jQuery前端分页示例分享
2015/02/10 Javascript
JQuery boxy插件在IE中边角图片不显示问题的解决
2015/05/20 Javascript
js获取元素的标签名实现方法
2016/10/08 Javascript
js实现可输入可选择的select下拉框
2016/12/21 Javascript
详解vue 配合vue-resource调用接口获取数据
2017/06/22 Javascript
vue-property-decorator用法详解
2019/12/12 Javascript
Vue使用JSEncrypt实现rsa加密及挂载方法
2020/02/07 Javascript
JavaScript直接调用函数与call调用的区别实例分析
2020/05/22 Javascript
jquery实现异步文件上传ajaxfileupload.js
2020/10/23 jQuery
[03:40]DOTA2英雄梦之声_第01期_炼金术士
2014/06/23 DOTA
Python实现统计代码行的方法分析
2017/07/12 Python
详解Python字典的操作
2019/03/04 Python
Python中的十大图像处理工具(小结)
2019/06/10 Python
django框架面向对象ORM模型继承用法实例分析
2019/07/29 Python
python 非线性规划方式(scipy.optimize.minimize)
2020/02/11 Python
Python pathlib模块使用方法及实例解析
2020/10/05 Python
武汉世纪畅想数字传播有限公司.NET笔试题
2014/07/22 面试题
化工机械应届生求职信
2013/11/04 职场文书
婚礼证婚人证婚词
2014/01/13 职场文书
抽奖活动主持词
2014/03/31 职场文书
奥林匹克运动会口号
2014/06/19 职场文书
效能风暴心得体会
2014/09/04 职场文书
有限公司股东合作协议书
2014/10/29 职场文书
合伙经营协议书范本(通用版)
2014/12/03 职场文书
十大冰系宝可梦排名,颜值最高的阿罗拉九尾,第三使用率第一
2022/03/18 日漫
Java 多态分析
2022/04/26 Java/Android
Redis基本数据类型Zset有序集合常用操作
2022/06/01 Redis