bk2014111825 2021-07-21 11:27 采纳率: 80%
浏览 62
已采纳

关于python链表中length方法的使用问题

b站视频学习,代码如下:

class Node(object):
    def __init__(self, elem, next=None):
        self.elem = elem
        self.next = next


class SingerLinkList(object):

    def __init__(self, node=None):
        self.head = node

    def length(self):
        current = self.head
        count = 1
        while current != None:
            count += 1
            current = current.next
            return count

if __name__ == "__main__":
    l1 = SingerLinkList()
    print(l1.length())

问题现象:和up主相同的代码片段,我这边返回结果不一致。
问题:
为什么SingerLinkList类中的length方法中的current可以直接使用 Node类中的next属性?
在SingerLinkList没有继承Node类或是在length方法中没有实例化 Node类,就直接使用 current.next?
或是有什么其他方法可以解决这个问题,有正确的length方法的代码可以提供下

  • 写回答

4条回答 默认 最新

  • bk2014111825 2021-07-21 19:04
    关注

    关于length方法中next属性问题说明如下:
    如果链表没有节点,则执行length方法时,会走if current==None:,即不存在next问题
    如果有节点,势必是要调用append方法,append方法中有实例化Node类的操作:
    1、append方法中,用node实例化Node类。
    2、执行length方法时,用到了SingerLinkList初始化的self.head属性,此属性的形参正是node变量,该变量因为已经实例化了,所以可以直接使用Node类的next方法

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

报告相同问题?

问题事件

  • 已采纳回答 7月21日
  • 创建了问题 7月21日

悬赏问题

  • ¥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键失灵