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 (将#修改为@)