反转链表
输入一个链表,反转链表后,输出新链表的表头。
输入:
{1,2,3}
复制
返回值:
{3,2,1}
三指针法思路:
1、我们准备三个变量,一个变量是反转后链表头,一个是待反转的下一个节点、一个变量是待反转链表头。
2、然后我们循环源链表,把原链表的值采用头插法 插入pre链表即可
3、具体操作
-
构建指针
-
记录下一个要反转的元素
-
采用头插法插入到pre链表
-
返回pre链表即可
多画画图就理解了
public ListNode ReverseList(ListNode head) {
if (head == null){
return head;
}
ListNode pre = null;
ListNode next = null;
while (head!=null){
//记录下一个要反转的节点
next = head.next;
//采用头插法插入pre
head.next = pre;
//将反转好的链表更新头节点
pre = head;
//移动到下一个要反转的节点进行下次反转
head = next;
}
return pre;
}