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 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退
  • ¥20 win系统的PYQT程序生成的数据如何放入云服务器阿里云window版?
  • ¥50 invest生境质量模块