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()
![](https://profile-avatar.csdnimg.cn/a2ac48cea3c044abbd996e8bda1ea926_n__e__e.jpg!4)
这样输出的链表为啥只有第一个节点?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- CSDN专家-天际的海浪 2021-07-03 19:31关注
你两次调用 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()
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 metadata提取的PDF元数据,如何转换为一个Excel
- ¥15 关于arduino编程toCharArray()函数的使用
- ¥100 vc++混合CEF采用CLR方式编译报错
- ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
- ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
- ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
- ¥50 如何openEuler 22.03上安装配置drbd
- ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
- ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
- ¥15 Windows11, backspace, enter, space键失灵