面试高频手撕题 | 08.反转一个链表

alt

一、知识点

链表是一种常见的数据结构,由一系列节点组成,每个节点包含两部分:数据和指针。指针指向下一个节点,从而形成链表。

反转链表是指将链表中的节点顺序倒过来,使得原来的尾节点变成头节点,原来的头节点变成尾节点。

在反转链表的过程中,需要注意以下几点:

  1. 链表的反转并不会改变节点的数据,只是改变了节点之间的指针指向。
  2. 反转链表可以使用迭代法或递归法。
  3. 在迭代法中,需要使用三个指针来记录当前节点、前一个节点和下一个节点。
  4. 在递归法中,需要注意递归的边界条件和返回值。

二、思路分析

  1. 迭代法:

    • 初始化三个指针:当前节点 cur、前一个节点 prev 和下一个节点 next。
    • 将 prev 和 next 指向头节点,将 cur 指向头节点的下一个节点。
    • 循环直到 cur 为空,每次将 prev 的 next 指向 cur,将 cur 指向 prev,然后将 prev 和 next 向后移动一位。
    • 返回 prev,即为反转后的头节点。
  2. 递归法:

    • 递归的边界条件是当节点为空时,返回 null。
    • 在递归函数中,将当前节点的下一个节点作为新的头节点,然后递归调用自身,直到节点为空。
    • 返回新的头节点,即为反转后的链表。

三、JavaScript 解答

  1. 迭代法:
function reverseList(head) {
  let prev = null;
  let curr = head;
  while (curr !== null) {
    let next = curr.next;
    curr.next = prev;
    prev = curr;
    curr = next;
  }
  return prev;
}
  1. 递归法:
function reverseList(head) {
  if (head === null || head.next === null) {
    return head;
  }
  let newHead = reverseList(head.next);
  head.next.next = head;
  head.next = null;
  return newHead;
}

四、Java 解答

  1. 迭代法:
public class ReverseLinkedList {
 public static ListNode reverseList(ListNode head) {
 ListNode prev = null;
 ListNode curr = head;
 while (curr != null) {
 ListNode next = curr.next;
 curr.next = prev;
 prev = curr;
 curr =

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

2024前端面试高频手撕题 文章被收录于专栏

2024前端面试高频手撕题的作用包括但不限于提升面试竞争力、检验基础知识掌握程度、提高问题解决能力等。本专栏从知识点,思路分析,JavaScript解答,Java解答,总结等五个方面全方面解答。适用于:准备前端开发岗位面试的求职者、希望提升前端开发技能和知识的学习者、准备升职或跳槽的前端开发人员。掌握面试高频手撕题都是非常有益的,它能够帮助你建立起扎实的前端基础知识和问题解决能力。

全部评论
【存储方式】 数组:是一种连续的存储结构,元素存储在连续的内存位置上。这意味着数组中的元素可以通过索引快速访问,访问速度通常是固定的。 链表:是一种链式存储结构,元素通过指针连接在一起。每个节点包含数据和指向下一个节点的指针。链表中的元素不一定存储在连续的内存位置上,因此不能通过索引直接访问,需要遍历链表来访问元素。
点赞 回复 分享
发布于 2024-01-16 00:11 广东
链表是一种常见的数据结构,由一系列节点组成,每个节点包含两部分:数据和指针。指针指向下一个节点,从而形成链表。
点赞 回复 分享
发布于 2024-01-16 00:10 广东
打卡,迭代法思路简单,代码实现容易,而递归法代码简洁,但在处理大型链表时可能会出现栈溢出的情况
点赞 回复 分享
发布于 2024-01-16 00:02 广东
迭代法思路简单,代码实现容易,而递归法代码简洁,但在处理大型链表时可能会出现栈溢出的情况。
点赞 回复 分享
发布于 2024-01-14 16:53 北京
无论是使用迭代法还是递归法,反转链表的核心思路都是改变节点的指针指向,从而达到链表反转的效果。
点赞 回复 分享
发布于 2024-01-14 16:37 广东

相关推荐

迟缓的斜杠青年巴比Q了:简历被投过的公司卖出去了,我前两天遇到过更离谱的,打电话来问我有没有意向报班学Java学习,服了,还拿我学校一个学长在他们那报班学了之后干了华为OD当招牌
点赞 评论 收藏
分享
评论
3
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务