如何使用Python实现一个栈判断括号是否平衡

  介绍

小编给大家分享一下如何使用Python实现一个栈判断括号是否平衡,希望大家阅读完这篇文章之后都有所收获、下面让我们一起去探讨吧!

栈(栈)在计算机领域是一个被广泛应用的集合,栈是线性集合,访问都严格地限制在一段,叫做顶(上)。举个例子,栈就想一摞洗干净的盘子,你每次取一个新盘子,都是放在这一摞盘子的最上的头,当你往里面添加盘子的时候,也是放在最上面,处在底部的盘子,你可能永远也用不到。栈的最常见操作,有如下两个:

推(a), #,压入,将一个压入的栈中   pop(), #,弹出,将栈的最后一个元素弹出

可是使用Python的列表数据结构,来模拟栈的操作,使用附加来模拟推,使用列表的流行来模拟栈的流行,但是这样做有一个弊端,那就是列表原本自带的操作方法同样能够使用,可能会造成混乱。

栈的实现下面就通过借助Python的列的表,来自定义一个栈类:

class 堆栈(对象):   “““才能使用数组实现一个栈“““   def 才能__init__(自我):   ,,,self.data =, []   def 才能推动(自我,,num):   ,,,“““压栈操作“““   ,,,self.data.append (num)   def 才能;流行(自我):   ,,,“““返回从栈中弹出的元素,,当栈为空的时候,,抛出IndexError"““   ,,,return  self.data.pop ()   def 才能,peek(自我):   ,,,“““查看当前栈顶的元素,,当栈为空的时候,,抛出IndexError"““   ,,,return  self.data [1]   def 才能__len__(自我):   ,,,“““返回栈的长度,,调用len (obj)时会自动调用obj对象的__len__方法“,“   ,,,return  len (self.data)   def 才能isEmpty(自我):   ,,,“““判断栈是否为空,““   ,,,return  True  if  len (self.data)==0, else 错误的   def 才能清楚(自己):   ,,,“““清空栈“““   ,,,self.data =, []   def 才能__repr__(自我):   ,,,“““当前对象的表现形式,,在终点直接键入对象时会调用“““   ,,,return  & # 39; Stack_& # 39;, +, str (self.data)   def 才能__str__(自我):   ,,,“““当前对象的字符串表示,,使用打印(obj)时会调用“““   ,,,return  & # 39; Stack_& # 39;, +, str (self.data)

以上代码实现了一个简单的基于列表的栈。

栈的应用栈应用的一个很典型的例子,就是检查括号是否匹配。例如:每一个开始的[后面,都应该跟着一个位置正确的],并且每一个(后面,也应该跟着一个位置正确的结束的)。

(…)……(…)   (…)……(…   )……((…)   def  isBalance(文本):   “““才能栈的应用,检查括号是否平衡“““   result_stack 才能=,堆栈()   for 才能小姐:拷贝文本:   ,,,if 小姐:[& # 39;{拷贝& # 39;,& # 39;[& # 39;,& # 39;(& # 39;]:   ,,,,,result_stack.push(我)   ,,,elif 小姐:拷贝(& # 39;}& # 39;,& # 39;]& # 39;,,& # 39;)& # 39;]:   ,,,,,#,遇到结束括号的情况   ,,,,,if  result_stack.isEmpty ():   ,,,,,,,#,如果当前栈为空,,不匹配,返回错误的   ,,,,,,,return 错误的   ,,,,,chFromStack =, result_stack.pop ()   ,,,,,if  not  ((==chFromStack  & # 39;{& # 39;,以及小姐:==,& # 39;}& # 39;,)   ,,,,,,,,,趁机(chFromStack ==, & # 39;[& # 39;,以及小姐:==,& # 39;]& # 39;)   ,,,,,,,,,趁机(chFromStack ==, & # 39;(& # 39;,以及小姐:==,& # 39;)& # 39;)):   ,,,,,,,#,如果不满足匹配条件,,则返回错误的   ,,,,,,,return 错误的   #才能,遍历结束后,,如果结果栈为空,,则代表括号匹配,,栈不为空,,括号不匹配   return 才能;result_stack.isEmpty ()

<强>补充:Python中的栈

在Python中,个人理解为栈可以用列表来代替

服从费罗:第一个在去年

其中入栈为(利用附加函数)

stack =, []   stack.append (& lt; item>)

出栈为(利用流行函数)

stack.pop (1), # stack.pop()也可

服从FIFO:先进先出

入栈为:

stack =, []   stack.append (& lt; item>)

出栈为:

stack.pop (0)

看完了这篇文章,相信你对“如何使用Python实现一个栈判断括号是否平衡”有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

如何使用Python实现一个栈判断括号是否平衡