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就不是我们需要的链表的头节点了。