面试题24. 反转链表
难度简单28收藏分享切换为英文关注反馈
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
示例:
输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL
思路:链表的反转,通常需要定义一个前置节点 遍历链表中所有结点。
time:O(n)
space:O(1)
//思路 每次遍历
public ListNode reverseList(ListNode head) {
if(head == null){
return null;
}
ListNode cur = head,pre = null;
while(cur!=null){
ListNode next = cur.next;//设置当当前节点next 赋值到next上
cur.next = pre;//cur.next = null
pre = cur; //当前节点指向pre
cur = next;//指向下一个节点
}
return pre;
}