N—E—E 2021-07-03 19:20 采纳率: 59.5%
浏览 29
已采纳

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

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()
  • 写回答

3条回答 默认 最新

  • 关注

    你两次调用 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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 我的代码无法在vc++中运行呀,错误很多
  • ¥50 求一个win系统下运行的可自动抓取arm64架构deb安装包和其依赖包的软件。
  • ¥60 fail to initialize keyboard hotkeys through kernel.0000000000
  • ¥30 ppOCRLabel导出识别结果失败
  • ¥15 Centos7 / PETGEM
  • ¥15 csmar数据进行spss描述性统计分析
  • ¥15 各位请问平行检验趋势图这样要怎么调整?说标准差差异太大了
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 wpf界面一直接收PLC给过来的信号,导致UI界面操作起来会卡顿
  • ¥15 init i2c:2 freq:100000[MAIXPY]: find ov2640[MAIXPY]: find ov sensor是main文件哪里有问题吗