python 单向链表问题

Python012

python 单向链表问题,第1张

不会。

实际上,SingleLinkedList只存储了链表的表头节点的位置。

每次调用add函数,相当于新建了一个节点,

调用setNext将其下一节点指向现在链表的表头,

然后将新建的节点位置作为新的表头位置保存在链表里面。

要得到链表的所有节点必须从表头节点开始一个一个往下跳转,一直跳转到下一节点位置为None,则表示查询完毕。

你有个误区。就是对‘=’这个符号意义不理解。

引用类型,它有且只是赋值地址而已。

a=ListNode(0)

//现在p 引用了a,也就是p指向了a的地址,a又指向了ListNode(0)

p = a

//因为之前p指向了a的地址,那么现在p就用地址拿到了a的内存块,也就是拿到了ListNode(0)的内存块,用ListNode(0).next = ListNode(1)。所以现在 就是 ListNode(0).next ->ListNode(1)

p.next = ListNode(1)

根据我的解释自己再理解一下

我再给你解释一下把。

你第一个问题:

p = a.next

p = a.next 将 a.next的地址给了p,那么p就是None,你后面a.next = ListNode(1),这个是你改变了a.next,与p 无关,因为p指向的是原来a.next为None的内存块。

第二个问题

p = ListNode(1) 你直接把p重新赋值了,p与新的的a.next还是无关

python基本语法。

1.python基础语法:如变量的声明与调用、基本输出语句、代码块语法、注释等:数据类型:通常都为数字、字符串、布尔值、数组、链表、Map、Set等:运算符:算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算符等。

2.流程控制语句:分支语句、循环语句。类的定义与使用:这个是面向对象编程语言才有的内容。常用API的使用:常用方法、工具类或模块的使用。