思路如下:
建立一个pre空结点和一个cur结点(初始化为head头结点),先将cur与pre交换,再将pre和cur分别向后移一位进行迭代。
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode reverseList(ListNode head) {
//pre空结点
ListNode pre=null;
//cur当前结点,初始化为头结点
ListNode cur=head;
//中间变量tep结点
ListNode tep=null;
//迭代
while(cur!=null){
//需要先储存cur.next,因为之后需要将指针后移,如果不储存,则会丢失掉cur.next
tep=cur.next;
//cur反向指向pre
cur.next=pre;
//pre和cur分别向前走一位
pre=cur;
cur=tep;
}
return pre;
}
}
原题地址:
206. 反转链表
反转链表动画:
动画
进阶习题:
25. K 个一组翻转链表