微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Stack.peek返回正确的值,但函数说不是

如何解决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 举报,一经查实,本站将立刻删除。