如何解决Stack.peek返回正确的值,但函数说不是
我的代码中有一个问题,我有一个条件,但是即使给出正确的条件,它也总是返回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 举报,一经查实,本站将立刻删除。