题目
这道题是 leetcode 的 206 题
给定一个链表,然后将其反转后输出
例如:
输入:1->2->3->4->5->null
输出:5->4->3->2->1->null
对应的题目链接 反转链表
解析
这道题的难度属于简单,思想挺简单,但想写对也不是很容易
我这里给出的方法是迭代法
遍历链表,将当前节点的 next 指针改成指向前一个元素,这里需要提前存储前一个元素。在更改引用前,先获取下一个节点,然后把 pre 和 cur 都前进一步,最后返回新的头节点
时间复杂度:O(n)
空间复杂度:O(1)
-
public ListNode reverseList(ListNode head) {
-
ListNode pre =
null;
-
ListNode cur = head;
-
while (cur !=
null) {
-
// 记录当前节点的下一个节点
-
ListNode temp = cur.next;
-
// 将当前节点指向 pre
-
cur.next = pre;
-
// pre 和 cur 都前进一步
-
pre = cur;
-
cur = temp;
-
}
-
return pre;
-
}
转载:https://blog.csdn.net/dam454450872/article/details/104735684
查看评论