链表头节点的处理

 public ListNode ReverseList(ListNode head) {
         ListNode pNode=head;//一般需要新建一个节点保存当前指针
         ......
 }

单链表有一个头节点head,指向链表在内存的首地址。无论在表中访问那一个节点,都需要从链表的头开始,顺序向后查找。链表的尾节点由于无后续节点,其指针域为空,写作为NULL 

下面的分析是错误的。

  • pNode 与head 指向同一个链表在内存的首地址

  • 很多地方都会建一个临时节点pNode来保存这个头节点head,但是没有new的原因,操作pNode完全等同于head,因为它们指向相同的地址。

  • 一般情况下,代码数量少的时候,有人喜欢用临时节点ListNode pNode=head; 但是如果涉及到对多个节点(head1,head2, head3)的时候,很多人的解答就是直接操作head1,head2,head3。

  • 可不可以认为,用这个ListNode pNode=head其实除了增加代码量,或许增加了辨识(其实不存在的)。没有任何用处呢?

首先我们需要弄清楚,需要返回什么?

如果需要返回以head为头节点的链表,那head是不能作为头指针的,需要

ListNode pNode=head; //需要新建一个节点pNode作为链表的头指针,操作pNode  最终返回头节点head;

如果把head直接作为指针处理,因为指针的移动,最后返回的head就不是我们需要的链表的头节点了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值