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单链表的简单实现方法
Sep 23 Python
实例讲解Python的函数闭包使用中应注意的问题
Jun 20 Python
详解Swift中属性的声明与作用
Jun 30 Python
python数据封装json格式数据
Mar 04 Python
django启动uwsgi报错的解决方法
Apr 08 Python
Python实现的文本对比报告生成工具示例
May 22 Python
基于python进行桶排序与基数排序的总结
May 29 Python
Linux下安装python3.6和第三方库的教程详解
Nov 09 Python
python 内置函数汇总详解
Sep 16 Python
在pycharm中实现删除bookmark
Feb 14 Python
python中如何打包用户自定义模块
Sep 23 Python
基于Python实现nc批量转tif格式
Aug 14 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
日本因肺炎疫情影响,这几部动漫推延播放!
2020/03/03 日漫
PHP输出控制功能在简繁体转换中的应用
2006/10/09 PHP
PHP iconv 解决utf-8和gb2312编码转换问题
2010/04/12 PHP
php获取$_POST同名参数数组的实现介绍
2013/06/30 PHP
详解PHP数组赋值方法
2015/11/07 PHP
php用户注册信息验证正则表达式
2015/11/12 PHP
PHP实现的DES加密解密实例代码
2016/04/06 PHP
js列举css中所有图标的实现代码
2011/07/04 Javascript
js confirm()方法的使用方法实例
2013/07/13 Javascript
js冒泡法和数组转换成字符串示例代码
2013/08/14 Javascript
JavaScript数值转换的三种方式总结
2014/07/31 Javascript
javascript实现dom动态创建省市纵向列表菜单的方法
2015/05/14 Javascript
javascript中CheckBox全选终极方案
2015/05/20 Javascript
JavaScript调试的多个必备小Tips
2017/01/15 Javascript
JS实现无缝循环marquee滚动效果
2017/05/22 Javascript
angularJs使用$watch和$filter过滤器制作搜索筛选实例
2017/06/01 Javascript
javascript 开发之网页兼容各种浏览器
2017/09/28 Javascript
nodejs中用npm初始化来创建package.json的实例讲解
2018/10/10 NodeJs
微信小程序使用二次贝塞尔曲线画波浪
2018/12/25 Javascript
基于JS实现父组件的请求服务过程解析
2019/10/14 Javascript
vue.js click点击事件获取当前元素对象的操作
2020/08/07 Javascript
[02:41]DOTA2英雄基础教程 谜团
2013/12/10 DOTA
实例讲解Python中的私有属性
2014/08/21 Python
python生成词云的实现方法(推荐)
2017/06/13 Python
Pycharm 实现下一个文件引用另外一个文件的方法
2019/01/17 Python
python tkinter之 复选、文本、下拉的实现
2020/03/04 Python
django教程如何自学
2020/07/31 Python
Volcom英国官方商店:美国殿堂级滑板、冲浪、滑雪服装品牌
2019/03/13 全球购物
Chinti & Parker官网:奢华羊绒女装和创新针织设计
2021/01/01 全球购物
一套C#面试题
2013/10/09 面试题
幼儿教师自我鉴定
2013/11/02 职场文书
工伤事故赔偿协议书
2014/04/15 职场文书
《从现在开始》教学反思
2014/04/15 职场文书
关于奉献的演讲稿
2014/05/21 职场文书
2014红色之旅心得体会
2014/10/07 职场文书
车间质检员岗位职责
2015/04/08 职场文书