为了账号安全,请及时绑定邮箱和手机立即绑定

这个链表实现有什么问题?

这个链表实现有什么问题?

德玛西亚99 2023-03-16 11:07:49
运行脚本会产生错误:Traceback (most recent call last):  File "D:/PycharmProjects/GeeksforGeeks/Linked List/Insertion of Nodes in LinkedList.py", line 49, in <module>llist.printList()  File "D:/PycharmProjects/GeeksforGeeks/Linked List/Insertion of Nodes in LinkedList.py", line 39, in printList违规行是:print(temp.data,end=' ')AttributeError: 'int' 对象没有属性 'data'我的代码是:-class Node:    def __init__(self,data):        self.data = data        self.next = Noneclass LinkedList:    def __init__(self):        self.head = None    def push(self,new_data):        new_node = Node(new_data)        new_node.next = self.head        self.head = new_node    def insertAfter(self,prev_node,new_data):        if prev_node is None:            return        new_node = Node(new_data)        new_node.next = prev_node.next        prev_node.next = new_node    def append(self,new_data):        new_node = Node(new_data)        if self.head is None:            self.head = new_node            return        last = self.head        while (last.next):            last = last.next        last.next = new_data    def printList(self):        temp = self.head        while (temp):            print(temp.data,end=' ')            temp = temp.nextif __name__ == '__main__':    llist = LinkedList()    llist.append(6)    llist.push(7)    llist.push(1)    llist.append(4)    llist.insertAfter(llist.head.next,8)    llist.printList()
查看完整描述

2 回答

?
呼唤远方

TA贡献1856条经验 获得超11个赞

在你的方法中append,last.next应该是new_node


class Node:

    def __init__(self,data):

        self.data = data

        self.next = None


class LinkedList:

    def __init__(self):

        self.head = None


    def push(self,new_data):

        new_node = Node(new_data)

        new_node.next = self.head

        self.head = new_node


    def insertAfter(self,prev_node,new_data):

        if prev_node is None:

            return


        new_node = Node(new_data)

        new_node.next = prev_node.next

        prev_node.next = new_node


    def append(self,new_data):

        new_node = Node(new_data)


        if self.head is None:

            self.head = new_node

            return


        last = self.head

        while (last.next):

            last = last.next


        last.next = new_node


    def printList(self):

        temp = self.head

        while (temp):

            print(temp.data,end=' ')

            temp = temp.next


if __name__ == '__main__':

    llist = LinkedList()

    llist.append(6)

    llist.push(7)

    llist.push(1)

    llist.append(4)

    llist.insertAfter(llist.head.next,8)

    llist.printList()

输出:


1 7 8 6 4


查看完整回答
反对 回复 2023-03-16
?
炎炎设计

TA贡献1808条经验 获得超4个赞

函数中有一个错误append:


    def append(self,new_data):

        new_node = Node(new_data)


        if self.head is None:

            self.head = new_node

            return


        last = self.head

        while last.next:

            last = last.next


        last.next = new_node # should not be new_data


查看完整回答
反对 回复 2023-03-16
  • 2 回答
  • 0 关注
  • 112 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号