【编程】为什么不能直接对链表头head进行操作?

在这里插入图片描述
比如我们有一个链表如下:
在这里插入图片描述
此时 head 就是 1 这个位置,但是链表是连着的,输出 head 你会得到一整串以 1 为起点的链子,也就是[1, 2, 3],head.next 会输出 [2, 3]

假设现在我们有一个未知长度的链表,想要计算其长度怎么办呢?
可以令 head = head.next 直到 head is None,期间进行计数就好啦

n = 0
while head:
    n += 1
    head = head.next

此时,输出的 n 就是链表的长度,但是 head 变成了 [] ,也就是说我们无法在输出整个链表的信息了。

所以,在对链表进行操作时,一般会 tmp = head ,对 tmp 一番操作之后,并不影响 head 的位置,整个链表也没有变化(如果你不改变的话),代码如下:

n = 0
tmp = head
while tmp:
    n += 1
    tmp = tmp.next

最后,想不明白的话强烈建议画个图,会好理解很多。另外,head 只是一个位置,位置。

猜你喜欢:👇🏻
【编程】位运算(异或)
【编程】二叉搜索树的定义
【编程】位(bit)、字节(byte)和字(word)的区别

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值