当前位置: 首页 > news >正文

15-双链表-双链表基本操作

题目

来源

827. 双链表 - AcWing题库

思路

此题我只想说,千万千万别漏了头结点和尾结点,不然根本查不出来是哪里出了问题,因为传入的k会有问题;最左边插入,相当于是在头结点的右边插入(也就是0号节点的右边);最右边插入相当于是尾节点的左边插入(也就是1号节点的左边)。

又由于idx是从2开始,所以对于题意的k,应该传入k+1。

其余详见代码。

代码

#include<iostream>
using namespace std;
const int N=100010;
int l[N],r[N],e[N],idx;//左端点,右端点,当前值,当前索引

//初始化
void init(){
    //0表示左端点,1表示右端点;相当于0是head,1是null
    r[0]=1;
    l[1]=0;
    idx=2;//0和1已经使用了
}

//在k节点右边插入x
void insertr(int k,int x){
    e[idx]=x;
    r[idx]=r[k];
    l[idx]=k;
    l[r[k]]=idx;
    r[k]=idx;
    idx++;
}

//在k节点左边插入x
void insertl(int k,int x){
    insertr(l[k], x); // 等价于在l[k]的右边插入x
}

//删除第k个节点
void del(int k){
    r[l[k]]=r[k];
    l[r[k]]=l[k];
}

int main(){
    init();
    int n;
    cin>>n;
    while(n--){
        string op;
        cin>>op;
        if(op=="R"){
            int x;
            cin>>x;
            insertl(1, x); // 在右端点的左边插入,即在l[1]的右边插入
        }
        else if(op=="D"){
            int k;
            cin>>k;
            del(k+1);
        }
        else if(op=="L"){
            int x;
            cin>>x;
            insertr(0, x); // 在0号节点右边插入;相当于0是head的右边插入
        }
        else if(op=="IL"){
            int k,x;
            cin>>k>>x;
            insertl(k+1, x);
        }
        else if(op=="IR"){
            int k,x;
            cin>>k>>x;
            insertr(k+1, x);
        }
    }
    for(int i=r[0];i!=1;i=r[i]){ //从head开始
        cout<<e[i]<<" ";
    }
    return 0;
}

相关文章:

  • 毕业论文答辩自述模板(本科、硕博均可使用)
  • Claude:从安全优先的 AI 实验室到创作者协作者(2025 深度解析)
  • BoNBoN——结合行为模仿和偏好对齐进行Best-of-N对齐的方法
  • 【Linux】深入理解Linux进程状态与优先级管理
  • 重删算法中的Bloom滤波器详解与C++实现
  • 1.5.6 掌握Scala内建控制结构 - match结构
  • NVIDIA开源FP8训练新范式COAT:减少40%显存占用,训练速度提高1.4倍
  • Linux目录操作学习总结
  • AI辅助的黑客攻击
  • docker最新源,及遇到问题+处理
  • 利用Python爬虫获取Shopee(虾皮)商品详情:实战指南
  • 【Linux】VMware 17 安装 VMware Tools
  • HAl库开发中断方式接收Can报文的详细流程
  • 深入自制Shell:解锁Linux进程控制的实践密码
  • Python散点密度图(Scatter Density Plot):数据可视化的强大工具
  • 深入理解ThreadLocal:线程安全的“独享空间”
  • 智慧共享杆:城市智能化管理的 “多面手”
  • Linux 用户与组管理实战:经验分享与最佳实践
  • Oracle OCP认证是否值得考?
  • Unity 中实例化预制体的完整过程
  • “免签圈”扩容,旅游平台:今年以来巴西等国入境游订单显著增加
  • 国防部:中方愿与俄方不断增强两军关系良好发展势头
  • 外交部介绍对巴西、阿根廷、智利、秘鲁、乌拉圭等5国试行免签政策
  • 全国人大常委会今年将初次审议检察公益诉讼法
  • “一百零一个愿望——汉字艺术展”亮相意大利威尼斯
  • 遭“特朗普关税”冲击,韩国今年经济增长预期“腰斩”降至0.8%