栈属于线性结构(Linear Struncture),要搞清楚这个概念,首先要明白”栈“原来的意思,如此才能把握本质。"栈“者,存储货物或供旅客住宿的地方,可引申为仓库、中转站,所以引入到计算机领域里,就是指数据暂时存储的地方,所以才有进栈、出栈的说法。在众多算法中,栈作为一种数据结构,应用广泛。


一、栈的特性

栈是一种有次序的数据项集合,在栈中,数据的加入和移除都仅发生在一端,如下图。

简单来说它就是存放数据的一种容器,不过这个容器有些特别,就像一个量筒,只能一端进出(push和pop),由于这种特殊的容器结构,栈就有了一个很重要的特性,后进先出(Last in First out),想象一下,把一个个鹌鹑蛋依次放入下面的量筒里,当再次把鹌鹑蛋取出来时,只能从最上面一个开始取出。

                                                      

在生活中我们也能经常碰到栈这种特性的地方,比如word文档里面的撤回,浏览器页面的返回上一页。

二、定义一个栈

我们知道了栈的特性和功能,接下来我们就来定义一个栈。

//我们定义一个Stack类
class Stack:
def __init__(self):
self.items = [] //初始化一个空的列表,存放数据,下面栈的操作会基于列表的一些方法来定义,如append,pop等 def isEmpty(self):
return self.items == [] //判断栈是否为空,返回True或者False def push(self,item):
self.items.append(item) // push操作,数据入栈,如上文中的把鹌鹑蛋放入量筒, def pop(self):
return self.items.pop() //pop 操作,出栈,把最后入栈的数据从栈内删除,列表的pop方法删除列表最后一个数据。 def peek(self):
return self.items[len(self.items)-1] //返回栈内最后入栈的数据,也就是栈顶的数据,这个操作和下面的size方法一样,不修改栈。 def size(self):
return len(self.items) //栈内还剩多少数据

我们首先实例化Stack类:

s = Stack()
s.isEmpty()
s.push("a")
s.push(1)
s.push(2)
s.size()
s.peek()
s.pop()
s.pop()
s.pop()
 

结果如下:

三、栈的简单应用

括号判定,括号一般都是成对出现,如果位置错乱或者不成对,括号不能左右刚好消除,则括号判定为False,比如“(()()(”,而"((()))",括号左右能消除,判定为True。

在这个一判定的过程中,我们要从左到右扫描,扫描到“(”,我们并不能及时处理,而是要看看是否有与其对应的“)”,那么此时便需要一个暂时放“(”的地方,这个地方就是栈。

def parChecker(symbolString):
s=Stack()
balanced = True
index = 0
while index < len(symbolString) and balanced:
symbol = symbolString[index]
if symbol == "(":
s.push(symbol) else:
if s.isEmpty():
balanced = False
else:
s.pop() index = index + 1 if balanced and s.isEmpty():
return True else:
return False print(parChecker("(((())))"))

代码参考慕课《数据结构与算法python版》

栈及其简单应用(python代码)的更多相关文章

  1. 几句简单的python代码完成周公解梦功能

    <周公解梦>是靠人的梦来卜吉凶的一本于民间流传的解梦书籍,共有七类梦境的解述.这是非常传统的中国文化体系的一部分,但是如何用代码来获取并搜索周公解梦的数据呢?一般情况下,要通过爬虫获取数据 ...

  2. 简单的python代码实现语音朗读

    昨天女友生日,因为她一直对生日无感,所以我也就没有准备什么礼物.想起元旦前写的自动测试的脚本,添加了语音来提示测试和报告错误.灵机一动,为什么不用这个语音来庆祝她生日快乐呢?身为设计公司市场经理的她对 ...

  3. 1.如何在Cloud Studio上执行Python代码?

    1.在python文件下新建python文件,输入文件名后按Enter键生成,比如: one.py . 2.简单输入python代码: print "haha" 3.打开左下角的终 ...

  4. python教程:用简单的Python编写Web应用程序

    python现在已经成为很多程序员关注的编程语言之一,很多程序员也都开始弄python编程,并且很多时候都会用自己的操作来选择,而现在不管是程序员还是少儿编程,都会有python这门课,今天就和大家分 ...

  5. 第2章 Python编程基础知识 第2.1节 简单的Python数据类型、变量赋值及输入输出

    第三节 简单的Python数据类型.变量赋值及输入输出 Python是一门解释性语言,它的执行依赖于Python提供的执行环境,前面一章介绍了Python环境安装.WINDOWS系列Python编辑和 ...

  6. 栈及其简单应用(二)(python代码)

    一.括号判定 前一篇文章我们介绍了栈的简单应用中,关于括号的判定,但那只是一种括号的判定,下面我们来介绍多种括号混合使用时,如何判断括号左右一一对应. 比如“{}{(}(][”这种情况,需要对一种括号 ...

  7. 洗礼灵魂,修炼python(3)--从一个简单的print代码揭露编码问题,运行原理和语法习惯

    前期工作已经准备好后,可以打开IDE编辑器了,你可以选择python自带的IDLE,也可以选择第三方的,这里我使用pycharm--一个专门为python而生的IDE 按照惯例,第一个python代码 ...

  8. 在树莓派上读取土壤湿度传感器读书-python代码实现及常见问题(全面简单易懂)

    本篇文章简单介绍了如何在树莓派上配置土壤湿度传感器以读取土壤湿度(以百分比的形式出现)及代码实现. 主要包含有以下4个模块: 一.土壤湿度传感器常见类型及介绍 二.实验所需设备 三.设备连线方式与代码 ...

  9. 在树莓派上读取DHT11温湿度传感器-python代码实现及常见问题(全面简单易懂)

    最近由于自己的课题需要,想要用在树莓派上使用DHT11温湿度传感器来读取空气中温湿度,遇到了几个问题,解决之后也对之前的知识进行了回顾,总结,特整理如下,希望能给也在学习树莓派的小伙伴们带来一些帮助. ...

随机推荐

  1. sql与SQL CODE和SQL State相关报错

    操作数据库过程中,遇到许多问题,很多都与SQL CODE和SQL State相关,现在把一个完整的SQLCODE和SQLState错误信息和相关解释作以下说明,一来可以自己参考,对DB2错误自行找出原 ...

  2. 软件测试大牛都是这样写测试用例的,你get到了嘛?

    1. 用于语句覆盖的基路径法 基路径法保证设计出的测试用例,使程序的每一个可执行语句至少执行一次,即实现语句覆盖.基路径法是理论与应用脱节的典型,基本上没有应用价值,读者稍作了解即可,不必理解和掌握. ...

  3. vue邪道玩法 : 把vue实例存在别的地方,以及可能会遇到的问题

    一般来说,VUE项目中,this指向VUE实例. 但有的时候,某些代码会改变this的指向. 这时,可以用一个临时变量存储VUE实例. test1(){ var _this = this // 把vu ...

  4. reCAPTCHA无法加载?一个小工具就可以轻松解决!

    Chrome用户可以在应用商店搜索gooreplacer安装,或者点我下载,然后打开chrome://extensions/,将下载的crx文件拖入浏览器窗口,即可完成安装 Firefox用户可以在  ...

  5. FaaS 给前端带来了什么?

    一.Serverless 与 FaaS Serverless 是一种云计算理念,即无服务器计算(Serverless Computing): Serverless suggests that the ...

  6. Python 编程语言的核心是什么?

    01 Python 编程语言的核心是什么? ​   为什么要问这个问题? 我想要用Python实现WebAssembly,这并不是什么秘密.这不仅可以让Python进入浏览器,而且由于iOS和Andr ...

  7. 第三节:Centos下安装Mysql5.6数据库

    1.下载mysql5.6版本 [官网-需要什么版本自己去找]https://dev.mysql.com/downloads/mysql/5.6.html [版本]linux通用 cd /usr/loc ...

  8. JavaFX布局神器-SceneBuilder

    JavaFX允许开发使用FXML来设计和布局界面,跟Qt和Android的布局有点类似,JavaFX用SceneBuilder来设计和布局界面. SceneBuilder最新的下载地址:https:/ ...

  9. python学习笔记1 -- 面向对象编程类和实例

    由于之前有一定基础,所以python中的类的概接受的比较快,与其他语言一样, python也是通过类来进行事务的抽象,一切皆对象,要不然怎么说程序员不缺对象呢. 言归正传,python中类的声明是cl ...

  10. 国内安装Homebrew

    原文链接更详细 命令 $ /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew. ...