反转链表`
1. 初始版本
在初始版本里面定义了4个变量:
- reverseHead:定义反转后链表的头部,即原链表的尾部;
- cur :定义当前节点,从head开始,这个可以不用定义,完全可以用head复用,纯粹为了方便看和理解;
- newNext :也就是原链表里的pre节点,成为新链表的next节点,有人会将其命名为pre;
- tmp:cur.next一方面遍历用,也就是原链表的next;
其中3,4不可缺,1,2 可缺;
public class Solution {
public ListNode ReverseList(ListNode head) {
ListNode reverseHead =null;
ListNode cur = head;
ListNode newNext =null;
ListNode tmp = null;
while (cur !=null){
tmp =cur.next;
cur.next=newNext;
if(tmp==null)
reverseHead = cur;
newNext = cur;
cur=tmp;
}
return reverseHead;
}
}
2.三个变量
public class Solution {
public ListNode ReverseList(ListNode head) {
ListNode reverseHead =null;
ListNode newNext =null;
ListNode tmp = null;
while (head !=null){
tmp =head.next;
head.next=newNext;
if(tmp==null)
reverseHead = head;
newNext = head;
head=tmp;
}
return reverseHead;
}
}
3.2个变量
public class Solution {
public ListNode ReverseList(ListNode head) {
ListNode newNext =null;
ListNode tmp = null;
while (head !=null){
tmp =head.next;
head.next=newNext;
newNext = head;
head=tmp;
}
return newNext;
}
}