剑指 Offer 24. 反转链表
剑指 Offer 24. 反转链表
题目
链接
https://leetcode-cn.com/problems/fan-zhuan-lian-biao-lcof/
问题描述
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
示例
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
提示
0 <= 节点个数 <= 5000
思路
迭代思想,把头节点存放起来,当新链表的尾节点,之后旧链表插入到新链表的头部,一个一个插,最后输出即可。
复杂度分析
时间复杂度 O(n)
空间复杂度 O(1)
代码
Java
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
public ListNode ReverseList(ListNode head) {
if(head ==null){
return null;
}
ListNode pre = new ListNode(0);
ListNode cur = head;
while(head!=null){
cur = head.next;
head.next = pre.next;
pre = head;
head = cur;
}
return pre;
}