前言
链表反转是一道非常热门的算法基础题,让我们来一起看一看这道题吧
本次解题使用的是迭代法(双指针)
描述:定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
一、解题思路
1.创建指针
2.暂存指针
3.修改指向
4.移动指针
5.循环执行
当cur指针不为null(不到链表的最后)则循环执行
二、代码实现
代码如下:
public ListNode reverseList(ListNode head) {
ListNode cur = head, pre = null;//创建指针
while(cur != null) {
ListNode tmp = cur.next; //暂存指针
cur.next = pre;//修改指针指向
pre = cur;//移动指针
cur = tmp;
}
return pre;
}