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实现将元祖转换成数组的方法
May 04 Python
Linux中安装Python的交互式解释器IPython的教程
Jun 13 Python
python中的lambda表达式用法详解
Jun 22 Python
Python Queue模块详细介绍及实例
Dec 27 Python
有趣的python小程序分享
Dec 05 Python
python3.6下Numpy库下载与安装图文教程
Apr 02 Python
Pycharm新手教程(只需要看这篇就够了)
Jun 18 Python
Python读取xlsx文件的实现方法
Jul 04 Python
对python中基于tcp协议的通信(数据传输)实例讲解
Jul 22 Python
Pytorch释放显存占用方式
Jan 13 Python
浅谈PyTorch中in-place operation的含义
Jun 27 Python
Python Pandas读取Excel日期数据的异常处理方法
Feb 28 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/10/28 PHP
Yii调试SQL的常用方法
2014/07/09 PHP
ThinkPHP有变量的where条件分页实例
2014/11/03 PHP
php常用字符串比较函数实例汇总
2014/11/24 PHP
PHP Cli 模式设置进程名称的方法
2019/06/12 PHP
javascript中String类的subString()方法和slice()方法
2011/05/24 Javascript
深入理解setTimeout函数和setInterval函数
2016/05/20 Javascript
js实现千分符和保留几位小数的简单实例
2016/08/01 Javascript
完美解决js传递参数中加号和&号自动改变的方法
2016/10/11 Javascript
JS中BOM相关知识点总结(必看篇)
2016/11/22 Javascript
vue2.0结合DataTable插件实现表格动态刷新的方法详解
2017/03/17 Javascript
jQuery ajax请求struts action实现异步刷新
2017/04/19 jQuery
js排序与重组的实例讲解
2017/08/28 Javascript
防止页面url缓存中ajax中post请求的处理方法
2017/10/10 Javascript
AngularJS遍历获取数组元素的方法示例
2017/11/11 Javascript
深度解读vue-resize的具体用法
2020/07/08 Javascript
[03:18]DOTA2放量测试专访820:希望玩家加入国服大家庭
2013/08/25 DOTA
用Python解析XML的几种常见方法的介绍
2015/04/09 Python
简单学习Python time模块
2016/04/29 Python
理解生产者消费者模型及在Python编程中的运用实例
2016/06/26 Python
Python基于matplotlib绘制栈式直方图的方法示例
2017/08/09 Python
python 中if else 语句的作用及示例代码
2018/03/05 Python
python按行读取文件,去掉每行的换行符\n的实例
2018/04/19 Python
纯css3实现的鼠标悬停动画按钮
2014/12/23 HTML / CSS
html5 canvas里绘制椭圆并保持线条粗细均匀的技巧
2013/03/25 HTML / CSS
CSS3 画基本图形,圆形、椭圆形、三角形等
2016/09/20 HTML / CSS
aden + anais官方网站:婴儿襁褓、毯子、尿布和服装
2017/06/21 全球购物
为什么会有内存对齐
2016/10/10 面试题
Android笔试题总结
2014/11/29 面试题
给导游的表扬信
2014/01/10 职场文书
自荐信如何制作?
2014/02/21 职场文书
献爱心捐款倡议书
2014/05/14 职场文书
公司酒会致辞
2015/07/30 职场文书
C站最全Python标准库总结,你想要的都在这里
2021/07/03 Python
python数据分析之单因素分析线性拟合及地理编码
2022/06/25 Python
vue本地构建热更新卡顿的问题“75 advanced module optimization”完美解决方案
2022/08/05 Vue.js