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随机生成一个6位的验证码代码分享
Mar 24 Python
利用Python绘制MySQL数据图实现数据可视化
Mar 30 Python
python开发简易版在线音乐播放器
Mar 03 Python
Python基于列表模拟堆栈和队列功能示例
Jan 05 Python
理论讲解python多进程并发编程
Feb 09 Python
Python获取二维矩阵每列最大值的方法
Apr 03 Python
PyCharm设置SSH远程调试的方法
Jul 17 Python
在Python中增加和插入元素的示例
Nov 01 Python
python事件驱动event实现详解
Nov 21 Python
基于python实现的百度音乐下载器python pyqt改进版(附代码)
Aug 05 Python
最新PyCharm 2020.2.3永久激活码(亲测有效)
Nov 26 Python
对Pytorch 中的contiguous理解说明
Mar 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
dedecms 制作模板中使用的全局标记图文教程
2007/03/11 PHP
php下几个常用的去空、分组、调试数组函数
2009/02/22 PHP
Windows7下的php环境配置教程
2015/02/28 PHP
php字符串函数学习之substr()
2015/03/27 PHP
PHP树-不需要递归的实现方法
2016/06/21 PHP
jQuery AJAX 调用WebService实现代码
2010/03/24 Javascript
JavaScript 图像动画的小demo
2012/05/23 Javascript
jquery数据验证插件(自制,简单,练手)实例代码
2013/10/24 Javascript
javascript判断chrome浏览器的方法
2014/03/26 Javascript
JS实现单行文字不间断向上滚动的方法
2015/01/29 Javascript
jquery实现适用于门户站的导航下拉菜单效果代码
2015/08/24 Javascript
全面解析Bootstrap表单使用方法(表单控件)
2015/11/24 Javascript
js和C# 时间日期格式转换的简单实例
2016/05/28 Javascript
JavaScript实现输入框与清空按钮联动效果
2016/09/09 Javascript
Bootstrap基本样式学习笔记之标签(5)
2016/12/07 Javascript
javascript循环链表之约瑟夫环的实现方法
2017/01/16 Javascript
JS中如何实现点击a标签返回页面顶部的问题
2017/01/19 Javascript
JS异步文件上传(兼容IE8+)
2017/04/02 Javascript
vue添加axios,并且指定baseurl的方法
2018/09/19 Javascript
Vue解决移动端弹窗滚动穿透问题
2020/12/15 Vue.js
Python基于PycURL自动处理cookie的方法
2015/07/25 Python
python 容器总结整理
2017/04/04 Python
Python连接phoenix的方法示例
2017/09/29 Python
Python scikit-learn 做线性回归的示例代码
2017/11/01 Python
python pandas 对时间序列文件处理的实例
2018/06/22 Python
Python基于matplotlib画箱体图检验异常值操作示例【附xls数据文件下载】
2019/01/07 Python
python使用socket 先读取长度,在读取报文内容示例
2019/09/26 Python
Python数据可视化实现多种图例代码详解
2020/07/14 Python
python两个list[]相加的实现方法
2020/09/23 Python
网页中的电话号码如何实现一键直呼效果_附示例
2016/03/15 HTML / CSS
Html5实现文件异步上传功能
2017/05/19 HTML / CSS
林清轩官方网站:山茶花润肤油开创者
2016/10/26 全球购物
党员领导干部廉洁从政承诺书
2014/03/27 职场文书
工作年限证明模板
2014/11/01 职场文书
小学毕业感言200字
2015/07/30 职场文书
高中班主任心得体会
2016/01/07 职场文书