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 元类使用说明
Dec 18 Python
python使用cookie库操保存cookie详解
Mar 03 Python
详解Python中列表和元祖的使用方法
Apr 25 Python
python爬取网页内容转换为PDF文件
Jul 28 Python
Tensorflow 同时载入多个模型的实例讲解
Jul 27 Python
python爬取内容存入Excel实例
Feb 20 Python
Django实现跨域的2种方法
Jul 31 Python
Python爬虫爬取Bilibili弹幕过程解析
Oct 10 Python
Python字典生成式、集合生成式、生成器用法实例分析
Jan 07 Python
如何通过命令行进入python
Jul 06 Python
如何快速一次性卸载所有python包(第三方库)呢
Oct 20 Python
Python将list元素转存为CSV文件的实现
Nov 16 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 一个比较完善的简单文件上传
2010/03/25 PHP
上传文件先创建目录 再上传到目录里面去
2010/12/29 PHP
ThinkPHP访问不存在的模块跳转到404页面的方法
2014/06/19 PHP
php实现高效获取图片尺寸的方法
2014/12/12 PHP
Prototype使用指南之range.js
2007/01/10 Javascript
javascript基于jQuery的表格悬停变色/恢复,表格点击变色/恢复,点击行选Checkbox
2008/08/05 Javascript
Safari5中alert的无限循环BUG
2011/04/07 Javascript
js控制web打印(局部打印)方法整理
2013/05/29 Javascript
JSON序列化与解析原生JS方法且IE6和chrome测试通过
2013/09/05 Javascript
解析img图片没找到onerror事件 Stack overflow at line: 0
2013/12/23 Javascript
JS调试必备的5个debug技巧
2014/03/07 Javascript
JQuery中DOM加载与事件执行实例分析
2015/06/13 Javascript
JS+CSS实现类似QQ好友及黑名单效果的树型菜单
2015/09/22 Javascript
Ionic如何创建APP项目
2016/06/03 Javascript
JS中innerHTML和pasteHTML的区别实例分析
2016/06/22 Javascript
Web纯前端“旭日图”实现元素周期表
2017/03/10 Javascript
JavaScript使用readAsDataURL读取图像文件
2017/05/10 Javascript
判断jQuery是否加载完成,没完成继续判断的解决方法
2017/12/06 jQuery
jQuery实现文字超过1行、2行或规定的行数时自动加省略号的方法
2018/03/28 jQuery
vue给对象动态添加属性和值的实例
2019/09/09 Javascript
Python、PyCharm安装及使用方法(Mac版)详解
2017/04/28 Python
python 文件转成16进制数组的实例
2018/07/09 Python
用vue.js组件模拟v-model指令实例方法
2019/07/05 Python
pyinstaller参数介绍以及总结详解
2019/07/12 Python
python flask搭建web应用教程
2019/11/19 Python
解决jupyter notebook import error但是命令提示符import正常的问题
2020/04/15 Python
利用pyecharts读取csv并进行数据统计可视化的实现
2020/04/17 Python
浅析图片上传及canvas压缩的流程
2020/06/10 HTML / CSS
全球航班旅行搜索网站:Cheapflights
2017/05/19 全球购物
顶撞领导检讨书
2014/01/29 职场文书
令人印象深刻的自荐信
2014/05/25 职场文书
投资意向书
2014/07/30 职场文书
群众路线专项整治方案
2014/10/27 职场文书
党支部综合考察意见
2015/06/01 职场文书
Go语言 go程释放操作(退出/销毁)
2021/04/30 Golang
Python 数据可视化之Seaborn详解
2021/11/02 Python