链表算法题和静态链表

例题1.206. 反转链表 - 力扣(LeetCode)

法一:

原地逆置法:不创建新的空间,只是修改指针域,让每个后继节点指向它的前驱结点

不要忘记把head指针也移过去

对于没有头结点的链表,head指针一开始指向1,而且也要用尾插法

假设1的前驱节点是NULL

循环结束条件:pre==temp==NULL

初始化:

temp,current都赋值为NULL,当pre!=NULL时,先让temp=pre→next,然后1指向NULL

current再指向pre,pre再指向temp

法三:试试递归,把原地逆置法用递归的思想写出来

cpp 复制代码
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        
            ListNode* pre=head;
             ListNode* temp=head;
            if(pre!=NULL) 
            {
                pre=pre->next;
                head->next=NULL;
            }
           
            while(pre!=NULL)
            {
                head=pre;
                pre=pre->next;
                head->next=temp;
                temp=head;
            }
            return head;
        
    }
};

例2. LCR 140. 训练计划 II - 力扣(LeetCode)

在未知head链表长度的情况下,有两个思路

1.原地转置后找 2.先遍历一遍找到结点个数,再遍历找

3.快慢指针,遍历一次找到,快指针指向NULL,慢指针刚好指向答案

cpp 复制代码
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : aval(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* trainingPlan(ListNode* head, int cnt) {
        //未知长度
        //双指针:l指针  r指针先走k个单位
        ListNode* l=head;
        ListNode* r=head;
        int i=0;
        while(r!=NULL&&i<cnt)
        {
            r=r->next;
            i++;
        }
        while(r!=NULL)
        {
            l=l->next;
            r=r->next;
        }

        return l;
    }
};

链表: 原地逆置 快慢指针(一前一后,按题意来)

静态链表:用数组模拟链表

相关推荐
BK贝壳10 分钟前
bool-hybrid-array 落盘我只认 .bha:用 Create_BHA / Ask_BHA 做布尔数组序列化
数据结构·python·numpy·1024程序员节
Solange__18 分钟前
影视预演怎么用AI生成3D场景?从分镜、Blockout到镜头交付的完整流程
人工智能·游戏·3d·ai·自然语言处理·aigc·游戏策划
会编程的小孩20 分钟前
C++ qt的安装
c++
又过二十24 分钟前
Qwen-Image2.1游戏素材工坊:一句话,生成一整套游戏美术素材(一)
ai·aigc·comfyui·game·qwen-image·游戏素材
known2 小时前
用 C# + Blazor 开发智能体(Agent)教程
ai·blazor
todoitbo2 小时前
在 Ubuntu ARM64 上运行 Q1 V3.0 MuJoCo 模型:加载、步进和单执行器响应
linux·运维·ubuntu·ai·机器人·仿真教程·启元
楚国的小隐士3 小时前
从审核员到监工:AI正在重写评价体系,也重写人的价值
ai·编程·ai编程·哲学·马列主义
企业数字化笔记3 小时前
视频人体姿态怎么做三维可视化?2D关键点、深度局限与技术选型
人工智能·算法·音视频
?abc!3 小时前
(数组)581. 最短无序连续子数组
数据结构·算法·leetcode
俊哥V4 小时前
每日 AI 研究简报 · 2026-10-24
人工智能·ai·1024程序员节