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中文编码那些事
Jun 25 Python
用实例解释Python中的继承和多态的概念
Apr 27 Python
Python抓取手机号归属地信息示例代码
Nov 28 Python
PyTorch上搭建简单神经网络实现回归和分类的示例
Apr 28 Python
python-itchat 获取微信群用户信息的实例
Feb 21 Python
对django后台admin下拉框进行过滤的实例
Jul 26 Python
django多种支付、并发订单处理实例代码
Dec 13 Python
jupyter notebook 重装教程
Apr 16 Python
Python填充任意颜色,不同算法时间差异分析说明
May 16 Python
Python extract及contains方法代码实例
Sep 11 Python
如何在Anaconda中打开python自带idle
Sep 21 Python
Django model class Meta原理解析
Nov 14 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安装问题
2006/10/09 PHP
PHP通用检测函数集合
2006/11/25 PHP
PHP程序61条面向对象分析设计的经验小结
2008/11/12 PHP
PHP 将逗号、空格、回车分隔的字符串转换为数组的函数
2012/06/07 PHP
Thinkphp中Create方法深入探究
2014/06/16 PHP
PHP完全二叉树定义与实现方法示例
2017/10/09 PHP
Yii框架引入coreseek分页功能示例
2019/02/08 PHP
ajax 文件上传应用简单实现
2009/03/03 Javascript
基于jquery ajax 用户无刷新登录方法详解
2012/04/28 Javascript
js判断浏览器类型为ie6时不执行
2014/06/15 Javascript
Node.js文件操作详解
2014/08/16 Javascript
jQuery+css实现的tab切换标签(兼容各浏览器)
2016/01/28 Javascript
jQuery qrcode生成二维码的方法
2016/04/03 Javascript
Function.prototype.apply()与Function.prototype.call()小结
2016/04/27 Javascript
一种基于浏览器的自动小票机打印实现方案(js版)
2016/07/26 Javascript
webpack 2.x配置reactjs基本开发环境详解
2017/08/08 Javascript
Vue打包后访问静态资源路径问题
2019/11/08 Javascript
vant组件中 dialog的确认按钮的回调事件操作
2020/11/04 Javascript
Python with语句上下文管理器两种实现方法分析
2018/02/09 Python
Python中对数组集进行按行打乱shuffle的方法
2018/11/08 Python
记一次python 内存泄漏问题及解决过程
2018/11/29 Python
Python Django 前后端分离 API的方法
2019/08/28 Python
基于python实现破解滑动验证码过程解析
2020/05/28 Python
Python将字典转换为XML的方法
2020/08/01 Python
德国珠宝和手表在线商店:VALMANO
2019/03/24 全球购物
预备党员思想汇报范文
2013/12/29 职场文书
周鸿祎:教你写创业计划书
2013/12/30 职场文书
2014年商场超市庆元旦活动方案
2014/02/14 职场文书
会计助理岗位职责
2014/02/17 职场文书
建房协议书
2014/04/11 职场文书
《三亚落日》教学反思
2014/04/26 职场文书
夏季药店促销方案
2014/08/22 职场文书
2015年秋季小班开学寄语
2015/05/27 职场文书
预备党员转正党小组意见
2015/06/01 职场文书
2016年主题党日活动总结
2016/04/05 职场文书
MySQL事务的隔离级别详情
2022/07/15 MySQL