从链表删除赔率

2024-04-25 19:35:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试从链表中删除所有赔率,我编写的方法在链表上非常有效,但当应用于链表时,会出现错误:

TypeError: unsupported operand type(s) for %: 'Node' and 'int'

如何解决它,我的代码如下所示:

    class Node:
        def __init__(self, data=None, next_node=None):
            self.data = data
            self.next = next_node

        def __str__(self):
            return str(self.data)


    class LinkedList:
        def __init__(self):
            self.length = 0
            self.head = None

        def print_list(self):
            node = self.head
            while node is not None:
                print(node, end=' ')
                node = node.next
            print('')

        def add_at_head(self, node):
            node.next = self.head
            self.head = node
            self.length += 1

        def remove_node_after(self, node):
            if node.next is not None:
               temp = node.next
               node.next = node.next.next
               temp.next = None


    def remove_odd(l):
        node = l.head
        for i in range(l.length):
            if node % 2 == 0:
                LinkedList.remove_node_after(node)
                node = node.next
            else:
                node = node.next    

    def main():
        my_list = LinkedList()
        my_list.add_at_head(Node(1))
        my_list.add_at_head(Node(2))
        my_list.add_at_head(Node(3))
        remove_odd(my_list)
        my_list.print_list()


    main()

Tags: selfnoneaddnodedatamydefhead
1条回答
网友
1楼 · 发布于 2024-04-25 19:35:14

看看你的代码,我觉得你需要改变

if node % 2 == 0:

if node.data % 2 == 0:

现在,您只是检查节点本身是否可以被2整除,但是您应该检查数据是否可以被2整除。 希望有帮助。你知道吗

相关问题 更多 >