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 05 Python
Python通过递归遍历出集合中所有元素的方法
Feb 25 Python
Python闭包的两个注意事项(推荐)
Mar 20 Python
pandas数值计算与排序方法
Apr 12 Python
Python3数据库操作包pymysql的操作方法
Jul 16 Python
与Django结合利用模型对上传图片预测的实例详解
Aug 07 Python
django有外键关系的两张表如何相互查找
Feb 10 Python
python读取图片的几种方式及图像宽和高的存储顺序
Feb 11 Python
appium+python adb常用命令分享
Mar 06 Python
Opencv常见图像格式Data Type及代码实例
Nov 02 Python
Django用户认证系统如何实现自定义
Nov 12 Python
Python OpenCV之常用滤波器使用详解
Apr 07 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
phpmyadmin 访问被拒绝的真实原因
2009/06/15 PHP
CodeIgniter多语言实现方法详解
2016/01/20 PHP
ThinkPHP3.2框架使用addAll()批量插入数据的方法
2017/03/16 PHP
Thinkphp 框架基础之源码获取、环境要求与目录结构分析
2020/04/27 PHP
extjs表格文本启用选择复制功能具体实现
2013/10/11 Javascript
JavaScript立即执行函数的三种不同写法
2014/09/05 Javascript
一个jquery实现的不错的多行文字图片滚动效果
2014/09/28 Javascript
JS插件overlib用法实例详解
2015/12/26 Javascript
js+css简单实现网页换肤效果
2015/12/29 Javascript
Angular客户端请求Rest服务跨域问题的解决方法
2017/09/19 Javascript
javascript对HTML字符转义与反转义
2018/12/13 Javascript
JavaScript实现汉字转换为拼音及缩写的方法示例
2019/03/28 Javascript
详解js创建对象的几种方法及继承
2019/04/12 Javascript
微信小程序实现的图片保存功能示例
2019/04/24 Javascript
深度了解vue.js中hooks的相关知识
2019/06/14 Javascript
Bootstrap实现模态框效果
2019/09/30 Javascript
解决Vue 移动端点击出现300毫秒延迟的问题
2020/07/21 Javascript
[03:27]最受玩家喜爱奖提名:PZH_Element 致玩家寄语
2016/12/20 DOTA
[04:50]2019DOTA2高校联赛秋季赛四强集锦
2019/12/27 DOTA
Python BeautifulSoup中文乱码问题的2种解决方法
2014/04/22 Python
通过C++学习Python
2015/01/20 Python
Python 实现一行输入多个值的方法
2018/04/21 Python
python抓取网站的图片并下载到本地的方法
2018/05/22 Python
小白入门篇使用Python搭建点击率预估模型
2018/10/12 Python
Python 保存矩阵为Excel的实现方法
2019/01/28 Python
使用keras框架cnn+ctc_loss识别不定长字符图片操作
2020/06/29 Python
利用python3筛选excel中特定的行(行值满足某个条件/行值属于某个集合)
2020/09/04 Python
Weblogic和WebSphere不同特点
2012/05/09 面试题
什么是ESB?请介绍一下ESB?
2015/05/27 面试题
韩语专业本科生求职信
2013/10/01 职场文书
邹越感恩父母演讲稿
2014/08/28 职场文书
党员学习中共十八大报告思想汇报
2014/09/15 职场文书
平凡的世界读书笔记
2015/06/25 职场文书
调研报告的主要写法
2019/04/18 职场文书
Android 界面一键变灰 深色主题工具类
2022/04/28 Java/Android