题目描述:
思路:
首先定义三个指针:per(当前节点的前一个节点),cur(当前节点),next(当前节点的下一个节点)。
然后初始化节点,per赋为null,cur赋值为头节点head,然后进入循环,只要cur不为空,就让next = cur.next,接下来开始操作指针:
让cur.next = per;(局部反转指针),再让per=cur;(per指针往后走),再让cur = next;(cur指针往后走),自此一轮循环结束。
当循环退出时,cur必为空,per走到了尾节点,此时我们把per当成新的头节点返回即可。
Java代码:
public ListNode reverseList(ListNode head) {
ListNode per = null;
ListNode cur = head;
while (cur != null) {
ListNode next = cur.next;
cur.next = per;
per = cur;
cur = next;
}
return per;
}