问题描述
我的代码中有一个问题,我有一个条件,但是即使给出正确的条件,它也总是返回false。这个问题是圆括号的问题。如果您看一下我的应用程序代码,我有3条elif
语句,其中指定了条件。我发现问题不在于.pop()
或第一个条件,而是第二个条件。当我使用print(stack.peek())
时,可以看到它返回了正确的self._top
,从而使elif
语句得以运行。但是由于某些原因,elif
语句无法运行。我真的迷路了,有人可以帮我吗?
这是我的堆栈代码:
class ListNode:
def __init__(self,value):
self._value = value
self._link = None
def value(self):
return self._value
def link(self):
return self._link
def newlink(self,node):
self._link = node
def __str__(self):
return self._value
class Stack:
def __init__(self):
self._top = None
self._length = 0
def empty(self):
if self._length == 0:
return True
return False
def push(self,value):
if self._top == None:
self._top = ListNode(value)
self._length += 1
else:
new_node = ListNode(value)
new_node._link = self._top
self._top = new_node
self._length += 1
def pop(self):
node = self._top
if self._top == None:
return None
else:
nextNode = node._link
self._top = nextNode
self._length -= 1
def peek(self):
if self._top == None:
return None
return self._top
def __str__(self):
_list = []
node = self._top
while node != None:
_list.append(node.value())
node = node._link
return f'{_list}'
这是我的应用代码:
import my_version_of_stack as s
def is_parentheses_matched(expression):
list_expression = list(expression)
stack = s.Stack()
for element in list_expression:
if element == '{' or element == '[' or element == '(':
stack.push(element)
elif element == ']' and stack.peek() == '[':
stack.pop()
elif element == '}' and stack.peek() == '{':
stack.pop()
elif element == ')' and stack.peek() == '(':
stack.pop()
return stack.empty()
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)