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 相关文章推荐
win10下Python3.6安装、配置以及pip安装包教程
Oct 01 Python
Python3学习urllib的使用方法示例
Nov 29 Python
python读取图片并修改格式与大小的方法
Jul 24 Python
基于python实现高速视频传输程序
May 05 Python
django框架模板中定义变量(set variable in django template)的方法分析
Jun 24 Python
python机器学习库xgboost的使用
Jan 20 Python
python读取文件指定行内容实例讲解
Mar 02 Python
Python figure参数及subplot子图绘制代码
Apr 18 Python
python绘制雷达图实例讲解
Jan 03 Python
python FTP编程基础入门
Feb 27 Python
PyCharm配置KBEngine快速处理代码提示冲突、配置命令问题
Apr 03 Python
python tqdm用法及实例详解
Jun 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配置参数总结
2013/06/14 PHP
php教程之phpize使用方法
2014/02/12 PHP
PHP中array_map与array_column之间的关系分析
2014/08/19 PHP
PHP判断是否连接上网络的方法
2015/07/01 PHP
php之static静态属性与静态方法实例分析
2015/07/30 PHP
javascript中的107个基础知识收集整理 推荐
2010/03/29 Javascript
原生Js与jquery的多组处理, 仅展开一个区块的折叠效果
2011/01/09 Javascript
JS清除IE浏览器缓存的方法
2013/07/26 Javascript
showModelDialog弹出文件下载窗口的使用示例
2013/11/19 Javascript
一个不错的js html页面倒计时可精确到秒
2014/10/22 Javascript
JavaScript插件化开发教程 (二)
2015/01/27 Javascript
jQuery实现点击小图片淡入淡出显示大图片特效
2015/09/09 Javascript
jQuery绑定事件的几种实现方式
2016/05/09 Javascript
清除浏览器缓存的几种方法总结(必看)
2016/12/09 Javascript
nodejs搭建本地http服务器教程
2017/03/13 NodeJs
完美解决axios在ie下的兼容性问题
2018/03/05 Javascript
JS实现动态生成html table表格的方法分析
2018/07/11 Javascript
vue项目在安卓低版本机显示空白的原因分析(两种)
2018/09/04 Javascript
LayUI动态设置checkbox不显示的解决方法
2019/09/02 Javascript
jquery添加div实现消息聊天框
2020/02/08 jQuery
如何基于jQuery实现五角星评分
2020/09/02 jQuery
python中的五种异常处理机制介绍
2014/09/02 Python
python 应用之Pycharm 新建模板默认添加编码格式-作者-时间等信息【推荐】
2019/06/17 Python
Pyecharts绘制全球流向图的示例代码
2020/01/08 Python
Scrapy基于scrapy_redis实现分布式爬虫部署的示例
2020/09/29 Python
H5最强接口之canvas实现动态图形功能
2019/05/31 HTML / CSS
Derek Rose官网:英国高档睡衣、家居服和内衣品牌
2020/01/18 全球购物
几道数据库的面试题或笔试题
2014/05/31 面试题
根叔历年演讲稿
2014/05/20 职场文书
纪律教育月活动总结
2014/08/26 职场文书
2014教师党员个人自我评议
2014/09/20 职场文书
学生不讲诚信检讨书
2014/09/29 职场文书
教师师德师风整改措施
2014/10/24 职场文书
详解MySQL中的pid与socket
2021/06/15 MySQL
Python jiaba库的使用详解
2021/11/23 Python
基于Python实现射击小游戏的制作
2022/04/06 Python