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

关于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 AT89C51控制8位八段数码管显示时钟。
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口