解题思路
主要就是使用三个指针。以链表的初始结构为1–2--3–4--5为例说明,变化的过程是:
状态1:1–2--3–4--5
状态2:2–1--3–4--5
状态3:3–2--1–4--5
状态4:4–3--2–1--5
状态5:5–4--3–2--1
提交代码
class Solution {
public ListNode reverseList(ListNode head) {
if(head==null||head.next==null) return head;
ListNode dummy=new ListNode(-1);
dummy.next=head;
ListNode p1=dummy,p2=dummy,tail=head;
while(p2!=null) {
p1=tail.next;
p2=p1.next;
tail.next=p2;
p1.next=dummy.next;
dummy.next=p1;
}
return dummy.next;
}
}