链表-添加新节点无效

问题描述

我刚刚开始学习链表,但似乎无法使用函数添加新节点。这是我的代码:

class Node:

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

    def __repr__(self):
        return self.data

class LinkedList:

    def __init__(self,nodes=None):
        self.head = None
        if nodes is not None:
            node = Node(data=nodes.pop(0))
            self.head = node
            # print(self.head)
            for elem in nodes:
                # print(elem)
                node.next = Node(data=elem)
                node = node.next
                # print(node)

    def __repr__(self):
        node = self.head
        nodes = []
        while node is not None:
            nodes.append(node.data)
            node = node.next
        nodes.append("None")
        return " - > ".join(nodes)

    def __iter__(self):
        node = self.head
        while node is not None:
            yield node
            node = node.next

    def add_first(self,node):
        node.next = self.head
        self.head = node


llist = LinkedList(["c"])
llist.add_first("j")
print(llist)

运行此命令时,出现AttributeError:'str'对象没有属性'next'。为什么它不能识别Node类中的“下一个”?

解决方法

您的add_first()函数有一个小错误。

我认为这会对您有所帮助

def add_first(self,s):
     node = Node(s)
     node.next = self.head
     self.head = node

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...