标签:ret nod lin deb for 而不是 一个 改变 while
我真的服了。
关于tmp应该保存什么值,糊涂了,自己画内存图才明白。
tmp应该存的是oldHead.next而不是oldHead。难怪一直在循环里跳不出来。debug好久。
tmp要存将要被改变,但原来的值还要用的变量!
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode reverseList(ListNode head) {
if(head==null||head.next==null)
return head;
ListNode tmp;//可以这样声明吗,还是要new一个?
ListNode newHead=head;
ListNode oldHead=head.next;//注意特殊情况
while(oldHead!=null){
tmp=oldHead.next;//!!!
oldHead.next=newHead;
newHead=oldHead;
oldHead=tmp;
}
head.next=null;
return newHead;
}
}
标签:ret nod lin deb for 而不是 一个 改变 while
原文地址:https://www.cnblogs.com/wsshub/p/14535174.html