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()
if self.head==None:
print(list0)
输出的时候,应该进入了这个判断,头结点为空。
def add(self,item):
current = Node(item)
current.setnext(self.head)
self.head=current