面试算法心得——反转链表

大家好,我是晴天学长,没想到,这么快就到了我比较熟悉的算法了,就是一些基本对象思维的链表,加油。💪💪💪


2) .算法思路

  • 用三个节点挨个遍历,把整个链表给反过来。

3).算法步骤

  • 创建名为 reverseList 的方法,它接受一个参数 head,即链表的头节点。
  • 检查 head 是否为 null。如果是,直接返回 head,因为没有需要反转的内容。
  • 创建两个指针:First 和 node。将 First 初始化为 null,将 node 初始化为 head。
  • 进入一个循环,只要 node 不为 null,就继续执行。
    在循环内部,创建一个新节点 next,并将其赋值为 node.next。这样做是
  • 为了临时存储原始链表中的下一个节点。
  • 将 node.next 更新为指向 First 节点。这实际上反转了当前节点的链接。
  • 将 First 节点更新为 node 节点,因为它将成为反转后链表的新头节点。
  • 通过将 node 的值设置为 next,将 node 移动到下一个节点。
  • 循环结束后,原始链表中的所有节点都被反转了。
  • 返回 First 节点,它是反转后链表的新头节点。

4). 代码实例

java 复制代码
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode reverseList(ListNode head) {
        if(head==null){
            return head;
        }
        ListNode First=null;
        ListNode node = head;
        while(node!=null){
            ListNode next = node.next;
            node.next=First;
            First= node;
            node=next;
        }
        return First;

    }
}

5). 总结

  • 注意,每个链表最后一个节点就是null,所以头节点应该是null

试题链接:

相关推荐
naruto_lnq17 分钟前
分布式系统安全通信
开发语言·c++·算法
Jasmine_llq37 分钟前
《P3157 [CQOI2011] 动态逆序对》
算法·cdq 分治·动态问题静态化+双向偏序统计·树状数组(高效统计元素大小关系·排序算法(预处理偏序和时间戳)·前缀和(合并单个贡献为总逆序对·动态问题静态化
爱吃rabbit的mq1 小时前
第09章:随机森林:集成学习的威力
算法·随机森林·集成学习
(❁´◡`❁)Jimmy(❁´◡`❁)2 小时前
Exgcd 学习笔记
笔记·学习·算法
YYuCChi2 小时前
代码随想录算法训练营第三十七天 | 52.携带研究材料(卡码网)、518.零钱兑换||、377.组合总和IV、57.爬楼梯(卡码网)
算法·动态规划
不能隔夜的咖喱3 小时前
牛客网刷题(2)
java·开发语言·算法
VT.馒头3 小时前
【力扣】2721. 并行执行异步函数
前端·javascript·算法·leetcode·typescript
进击的小头3 小时前
实战案例:51单片机低功耗场景下的简易滤波实现
c语言·单片机·算法·51单片机
咖丨喱4 小时前
IP校验和算法解析与实现
网络·tcp/ip·算法
罗湖老棍子5 小时前
括号配对(信息学奥赛一本通- P1572)
算法·动态规划·区间dp·字符串匹配·区间动态规划