定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
示例:
输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL
限制:
0 <= 节点个数 <= 5000
注意:本题与主站 206 题相同:https://leetcode-cn.com/problems/reverse-linked-list/
Related Topics
代码
class Solution {
public ListNode reverseList(ListNode head) {
if (head == null || head.next == null){
return head;
}
ListNode pre = head;
ListNode cur = head.next;
head.next = null;
ListNode tmp;
while (cur!=null){
tmp = cur.next;
cur.next = pre;
pre = cur;
cur = tmp;
}
return pre;
}
}
一遍遍历,题目和LeetCode刷题【206】反转链表一样,这里是实现的迭代遍历的方法,在206题中实现的是递归的方法,两篇可以结合起来一起看下,其本质实现逻辑是一样的
- 记下上一个节点,和下一个节点
- 把当前节点的next指向上一个节点,
- 把上一个节点pre指向当前节点
- 跳转处理下一个节点
- 记得清除头结点的next指向
发表评论