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 logging 日志轮转文件不删除问题的解决方法
Aug 02 Python
详解python基础之while循环及if判断
Aug 24 Python
tensorflow创建变量以及根据名称查找变量
Mar 10 Python
Python多重继承的方法解析执行顺序实例分析
May 26 Python
python实现推箱子游戏
Mar 25 Python
Python实例方法、类方法、静态方法的区别与作用详解
Mar 25 Python
Python编程中类与类的关系详解
Aug 08 Python
浅谈Python3实现两个矩形的交并比(IoU)
Jan 18 Python
Python进行统计建模
Aug 10 Python
python把一个字符串切开的实例方法
Sep 27 Python
python 窃取摄像头照片的实现示例
Jan 08 Python
python实现经典排序算法的示例代码
Feb 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/11/23 PHP
使用php判断服务器是否支持Gzip压缩功能
2013/09/24 PHP
THINKPHP项目开发中的日志记录实例分析
2014/12/01 PHP
php下载文件,添加响应头的简单实例
2016/09/22 PHP
Mac系统下安装PHP Xdebug
2018/03/30 PHP
不用ajax实现点击文字即可编辑的方法
2007/12/16 Javascript
悄悄用脚本检查你访问过哪些网站的代码
2010/12/04 Javascript
移动节点的jquery代码
2014/01/13 Javascript
js实现俄罗斯方块小游戏分享
2014/01/31 Javascript
Javascript高级技巧分享
2014/02/25 Javascript
Ext4.2的Ext.grid.plugin.RowExpander无法触发事件解决办法
2014/08/15 Javascript
JavaScript数据类型检测代码分享
2015/01/26 Javascript
JS实现左右拖动改变内容显示区域大小的方法
2015/10/13 Javascript
AngularJs页面筛选标签小功能
2016/08/01 Javascript
vuejs在解析时出现闪烁的原因及防止闪烁的方法
2016/09/19 Javascript
Bootstrap如何创建表单
2016/10/21 Javascript
vue实现todolist单页面应用
2017/04/11 Javascript
vue中使用refs定位dom出现undefined的解决方法
2017/12/21 Javascript
JavaScript简单实现的仿微博留言功能示例
2019/01/17 Javascript
详解JavaScript 浮点数运算的精度问题
2019/07/23 Javascript
使用Python实现一个简单的项目监控
2015/03/31 Python
python之array赋值技巧分享
2019/11/28 Python
OpenCV 之按位运算举例解析
2020/06/19 Python
在CentOS7下安装Python3教程解析
2020/07/09 Python
celery在python爬虫中定时操作实例讲解
2020/11/27 Python
手把手教你配置JupyterLab 环境的实现
2021/02/02 Python
iframe跨域的几种常用方法
2019/11/11 HTML / CSS
写出一个方法实现冒泡排序
2016/07/08 面试题
介绍一下except的用法和作用
2015/01/22 面试题
送货司机岗位职责
2013/12/11 职场文书
十月份红领巾广播稿
2014/01/22 职场文书
京剧自荐信
2014/01/26 职场文书
《哪吒闹海》教学反思
2014/02/28 职场文书
美术课外活动总结
2014/07/08 职场文书
导游词之崇武古城
2019/10/07 职场文书
PostgreSQL出现死锁该如何解决
2022/05/30 PostgreSQL