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 相关文章推荐
Win7上搭建Cocos2d-x 3.1.1开发环境
Jul 03 Python
Python对象的深拷贝和浅拷贝详解
Aug 25 Python
解决Python字典写入文件出行首行有空格的问题
Sep 27 Python
浅谈pandas中DataFrame关于显示值省略的解决方法
Apr 08 Python
python爬虫之线程池和进程池功能与用法详解
Aug 02 Python
python实现给scatter设置颜色渐变条colorbar的方法
Dec 13 Python
python中的句柄操作的方法示例
Jun 20 Python
Python高级特性 切片 迭代解析
Aug 23 Python
Python中注释(多行注释和单行注释)的用法实例
Aug 28 Python
Python pandas自定义函数的使用方法示例
Nov 20 Python
Python实现的北京积分落户数据分析示例
Mar 27 Python
Keras搭建自编码器操作
Jul 03 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面向对象全攻略 (八)重载新的方法
2009/09/30 PHP
PHP 获取远程网页内容的代码(fopen,curl已测)
2011/06/06 PHP
PHP使用gmdate实现将一个UNIX 时间格式化成GMT文本的方法
2015/03/19 PHP
Thinkphp关闭缓存的方法
2015/06/26 PHP
php类的自动加载操作实例详解
2016/09/28 PHP
PHP 加密 Password Hashing API基础知识点
2020/03/02 PHP
JavaScript操作XML 使用百度RSS作为新闻源示例
2012/02/17 Javascript
JavaScript实现鼠标点击后层展开效果的方法
2015/05/13 Javascript
详解AngularJS中的表格使用
2015/06/16 Javascript
浏览器中url存储的JavaScript实现
2015/07/07 Javascript
Javascript编写俄罗斯方块思路及实例
2015/07/07 Javascript
js控制li的隐藏和显示实例代码
2016/10/15 Javascript
JS作用域闭包、预解释和this关键字综合实例解析
2016/12/16 Javascript
BootStrap Fileinput的使用教程
2016/12/30 Javascript
JS正则截取两个字符串之间及字符串前后内容的方法
2017/01/06 Javascript
JavaScript之DOM插入更新删除_动力节点Java学院整理
2017/07/03 Javascript
基于Vue实现关键词实时搜索高亮显示关键词
2018/07/21 Javascript
vue中的mvvm模式讲解
2019/01/31 Javascript
微信小程序如何刷新当前界面的实现方法
2019/06/07 Javascript
layui自己添加图片按钮并点击跳转页面的例子
2019/09/14 Javascript
JavaScript实现好看的跟随彩色气泡效果
2020/02/06 Javascript
对numpy和pandas中数组的合并和拆分详解
2018/04/11 Python
Python读取excel中的图片完美解决方法
2018/07/27 Python
python实现控制台打印的方法
2019/01/12 Python
基于OpenCV的网络实时视频流传输的实现
2020/11/15 Python
100%植物性、有机、即食餐:Sakara Life
2018/10/25 全球购物
制冷与电控专业应届生求职信
2013/11/11 职场文书
银行行长竞聘演讲稿
2014/04/23 职场文书
公民授权委托书
2014/10/15 职场文书
狼牙山五壮士观后感
2015/06/09 职场文书
2015七夕情人节宣传语
2015/07/14 职场文书
2015年秋学期教研工作总结
2015/10/14 职场文书
2016年情人节问候语
2015/11/11 职场文书
Python scrapy爬取起点中文网小说榜单
2021/06/13 Python
Go语言入门exec的基本使用
2022/05/20 Golang
5个实用的JavaScript新特性
2022/06/16 Javascript