这样输出的链表为啥只有第一个节点?

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

    def getdata(self):
        return self.data

    def getnext(self):
        return  self.next

    def setdata(self,newdata):
        self.data=newdata

    def setnext(self,newnext):
        self.next=newnext

class unorderedlist:
    def __init__(self):
        self.head=None

    def printlist(self):
        current=self.head
        list0=[]
        if self.head==None:
            print(list0)
        else:
            while current!=None:
                list0.append(current.getdata())
                current=current.getnext()
            print(list0[:])
    
    def add(self,item):
        Node(item).setnext(self.head)
        self.head=Node(item)
    
    def insert(self,pos,item):
        if pos==0:
            Node(item).setnext(self.head)
            self.head = Node(item)
        else:
            current = self.head
            count=0
            while count<pos:
                if current.getdata() != item:
                    current = current.getnext()
                    count=count+1
            Node(item).setnext(current.getnext())
            current.setnext(Node(item))


list1=unorderedlist()
list1.add(17)
list1.add(26)
list1.add(31)
list1.add(54)
list1.add(77)
list1.insert(0,16)
list1.printlist()

你两次调用 Node(item)是创建了两个单独的结点
Node(item).setnext(self.head)
self.head=Node(item)

应该改成
n = Node(item)
n.setnext(self.head)
self.head=n

你题目的解答代码如下:(如有帮助,望采纳!谢谢! 点击我这个回答右上方的【采纳】按钮)

class Node:
    def __init__(self,initdata):
        self.data=initdata
        self.next=None
    def getdata(self):
        return self.data
    def getnext(self):
        return  self.next
    def setdata(self,newdata):
        self.data=newdata
    def setnext(self,newnext):
        self.next=newnext
class unorderedlist:
    def __init__(self):
        self.head=None
    def printlist(self):
        current=self.head
        list0=[]
        if self.head==None:
            print(list0)
        else:
            while current!=None:
                list0.append(current.getdata())
                current=current.getnext()
            print(list0[:])
    def add(self,item):
        n = Node(item)
        n.setnext(self.head)
        self.head=n
    def insert(self,pos,item):
        if pos==0:
            n = Node(item)
            n.setnext(self.head)
            self.head=n
        else:
            current = self.head
            count=1
            while count<pos:
                if current.getdata() != item:
                    current = current.getnext()
                    count=count+1
            n = Node(item)
            n.setnext(current.getnext())
            current.setnext(n)

list1=unorderedlist()
list1.add(17)
list1.add(26)
list1.add(31)
list1.add(54)
list1.add(77)
list1.insert(0,16)
list1.insert(1,15)
list1.printlist()

img

if self.head==None:
print(list0)
输出的时候,应该进入了这个判断,头结点为空。

def add(self,item):
        current = Node(item)
        current.setnext(self.head)
        self.head=current