从链接列表的尾部移除(Python)

2024-06-02 05:23:17 发布

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

我是Python新手,在实现从链接列表中删除最后一个节点的函数时遇到了困难。这是我到目前为止的代码(我在一个名为Coderunner的在线平台上编写代码,该平台已经为我实现了一些背景代码,比如Node类):

class LinkedList:

    def __init__(self):
        self.head = None

    def print_all(self):
        current = self.head
        while current != None:
            print(current.get_data())
            current = current.get_next()

    def add(self, item): 
        new_node = Node(item)
        new_node.set_next(self.head)
        self.head = new_node      

    def remove_from_tail(self): 
        current = self.head
        prev = current
        while current != None:
            current = current.get_next()
            prev.set_next(current.get_next())
            return current

运行以下代码时:

^{pr2}$

我得到:

Removed: <__main__.Node object at 0x1063650>
Bike
Truck

谁能告诉我哪里出错了吗?似乎node对象得到了打印,但节点内部的值却没有打印出来。提前感谢您的帮助!在


Tags: 代码selfnonenodenewget节点def
2条回答

看起来这段代码将从列表中删除所有节点。尝试类似于:

def remove_from_tail(self): 
    current = self.head
    prev = current
    while current.get_next() != None: #the last element will have next == None
        prev = current
        current = current.get_next()
    # At this point, current will be pointing to the last element in the list
    prev.set_next(None)
    return current

remove_from_trail方法返回的值属于Node类型。当您打印它时,您正在打印该节点对象。您需要访问节点内的值,可以使用:

dir(result) 

查看对象有哪些方法和属性,然后调用要查找的属性。在

相关问题 更多 >