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 求高通平台Softsim调试经验
  • ¥15 canal如何实现将mysql多张表(月表)采集入库到目标表中(一张表)?
  • ¥15 wpf ScrollViewer实现冻结左侧宽度w范围内的视图
  • ¥15 栅极驱动低侧烧毁MOSFET
  • ¥30 写segy数据时出错3
  • ¥100 linux下qt运行QCefView demo报错
  • ¥50 F1C100S下的红外解码IR_RX驱动问题
  • ¥20 基于matlab的航迹融合 航迹关联 航迹插补
  • ¥15 用Matlab实现图中的光线追迹
  • ¥15 联想笔记本开机出现系统更新界面