文章目录

前言

一、栈的特点

二、python实现栈

三、栈应用举例--匹配括号


前言

栈有时也被称为“下推栈”,它是一种有序集合,且添加和一处操作总发生在同一端,一般将其称之为顶端,另一端则为底端。

一、栈的特点

栈里的元素离底端越近代表它在栈里的时间越久,栈的最大特点就是LIFO即last-in-first-out,用中文说就是“后进先出”,意思就是最后进栈的元素最先出栈,元素的插入顺序正好与移除顺序相反,它支持以下操作:

栈的操作
Stack() 创建一个空栈,不需要参数,会返回一个栈
push(element) 往栈的顶部添加一个元素,参数为所添加的元素,无返回值
pop() 将栈顶部的元素移除,无参数,会返回移除的顶部元素,修改原栈
peek() 返回栈的顶部元素,无参数
isEmpty() 检查是否为空栈,会返回一个布尔类型值
size() 返回栈中元素的数目,无参数,返回一个整数

二、python实现栈

class Stack:def __init__(self):self.item = []def isEmpty(self):return self.item==[]def push(self,element):self.item.append(element)def peek(self):return self.item[-1]def size(self):return len(self.item)def pop(self):top_element = self.item[-1]del self.item[-1]return top_element

三、栈应用举例--匹配括号问题

匹配括号是指每一个左括号都必须有与之对应的右括号,并且括号之间有着正确的嵌套关系。

例如:"()()"、"((()))"等都是正确匹配的括号串

而"(()))"、"()()(()"等就是错误匹配的括号串

现在需要编写一个程序它从左到右读取一个括号串,然后判断是否正确匹配,输出一个布尔值。

我们可以发现一个重要现象,如果时正确匹配的括号串,当从左往右匹配括号时,最右边的左括号一定与接下来第一个右括号匹配,而第一个左括号可能要和最后一个右括号想匹配,即相匹配的右括号与左括号的出现顺序是相反的,这是在赤裸裸的明示我们使用栈来解决该问题!

算法思路为,创建一个空栈后,当遇见左括号时就往栈的顶部添加标记(可以是任意符号,就添加左括号也行),而当遇见右括号时,就删除一个栈的顶部元素,因为二者时成双成对的,所以如果是正确匹配的括号串,最终一定是剩下一个空栈;反之,错误匹配则剩下一个非空栈。所以读取完括号串后,直接调用isEmpty函数输出一个布尔值即可。

class Stack:def __init__(self):self.item = []def isEmpty(self):return self.item==[]def push(self,element):self.item.append(element)def peek(self):return self.item[-1]def size(self):return len(self.item)def pop(self):top_element = self.item[-1]del self.item[-1]return top_element
def Check(brakets):stack = Stack()for i in list(brakets):if i=='(':stack.push(0)elif i==')':stack.pop()return stack.isEmpty()
if __name__ == '__main__':braket = input()print(Check(braket))
												

python数据结构-栈的实现相关推荐

  1. python数据结构-栈(stack)

    栈 栈是一种特殊的线性表,其插入删除操作只能在表的尾部进行 在栈中允许进行插入删除的操作的一端为栈顶,另一端为栈底 栈的插入叫做入栈,栈的删除叫做出栈 栈是先进后出,类似往箱子里放衣服,先放进来的衣服 ...

  2. Python数据结构——栈、队列的实现(一)

    1. 栈 栈(Stack)是限制插入和删除操作只能在一个位置进行的表,该位置是表的末端,称为栈的顶(top).栈的基本操作有PUSH(入栈)和POP(出栈).栈又被称为LIFO(后入先出)表. 1.1 ...

  3. Python数据结构栈,后进先出

    栈,后进先出LIFO

  4. python线性表和队列_[笔记]python数据结构之线性表:linkedlist链表,stack栈,queue队列...

    python数据结构之线性表 python内置了很多高级数据结构,list,dict,tuple,string,set等,在使用的时候十分舒心.但是,如果从一个初学者的角度利用python学习数据结构 ...

  5. Python数据结构学习笔记——栈

    目录 一.栈的定义和特性 (一)栈的定义 (二)栈的反转特性 二.实现分析步骤 三.栈的Python实现代码 四.栈的应用 (一)匹配圆括号 (二)匹配符号 (三)模2除法(十进制转二进制) (四)进 ...

  6. Python 数据结构之栈的实现

    文章目录 栈的概念 栈的特点 栈的操作 Python 实现栈 栈的简单应用:括号匹配问题 栈的简单应用:倒序输出一组元素 栈的概念 栈(stack)又名堆栈,栈是一种线性数据结构,用先进后出或者是后进 ...

  7. python数据结构-数组/列表/栈/队列及实现

    首先 我们要分清楚一些概念和他们之间的关系 数组(array)  表(list)  链表(linked list)  数组链表(array list)   队列(queue)  栈(stack) li ...

  8. Python数据结构与算法(二)栈和队列

    本系列总结了python常用的数据结构和算法,以及一些编程实现. 参考书籍:<数据结构与算法 Python语言实现> [美]Michael T.Goodrich, Roberto Tama ...

  9. Python数据结构与算法(3.1)——栈

    Python数据结构与算法(3.1)--栈 0. 学习目标 1. 栈的基本概念 1.1 栈的基本概念 1.2 栈抽象数据类型 1.3 栈的应用场景 2. 栈的实现 2.1 顺序栈的实现 2.2 链栈的 ...

最新文章

  1. gprs 神奇宝典java,2016联通笔试知识点大全
  2. OpenGL材质和光照(转)part2
  3. JavaWeb 项目安全问题及其解决方案
  4. 香港一小巴侧翻致1死16伤 警方:未见机件故障
  5. java面板中添加面板_java – 在面板中添加一个复杂的图像,在一个定制的用户界面中使用按钮...
  6. opencv在手机上实现照片背景虚化
  7. jenkins的邮件提醒
  8. 教师使用计算机的能力提升,河南省中小学教师信息技术应用能力提升工程实效研究...
  9. ESXI安装以及重新安装
  10. Word中把竖排文字里的数字变横向
  11. 如何给域名前加上 www
  12. Qt加载百度地图和谷歌地图
  13. 保险巨头安盛将推出代币众筹保险服务
  14. asp.net 生命周期
  15. 计算机网络重要知识点总结(期末复习笔记)
  16. fastjson:json数组遍历
  17. QueryWrapper快速查一条数据
  18. 前端linux基础,这一篇就够了
  19. 10 个免费的网络监控工具
  20. 电商网站中用户评论模块剖析

热门文章

  1. ubuntu速度优化
  2. activiti扩展节点属性(在UserTask节点上添加附件上传功能)
  3. linux运行国服英雄联盟排行榜,《英雄联盟》国服服务器官方排名情况怎么样 国服服务器官方排名分析...
  4. oracle中角色和用户权限,ORACLE 权限跟角色
  5. 让天下没有难用的搜索:阿里搜索如何成长为贴心“暖男”?
  6. js阻止冒泡,兼容写法。
  7. PYTHON:单引号、双引号和三双引号的区别
  8. 苹果6s怎样关闭位置服务器,iphone6s后台程序怎么关闭?苹果6S关闭后台程序图文教程...
  9. ppt矩形里面的图片怎么放大缩小_这样的九宫格缩放效果,是怎么用PPT做出来的呢?...
  10. 使用kali系统中的nmap工具扫描漏洞