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

模拟单链表和双链表

模拟单链表

#include <bits/stdc++.h>
using namespace std;
const int N = 1e5+10, M = N;
int h = -1, e[M], ne[M], idx = 1;
void add_h(int x)
{
    e[idx] = x, ne[idx] = h, h = idx++;
}
void d_k(int k)
{
    ne[k] = ne[ne[k]];
}
void add_k(int k, int x)
{
    e[idx] = x, ne[idx] = ne[k], ne[k] = idx++;
}
int main()
{
    int m;
    cin >> m;
    for(int i = 1; i <= m; i++)
    {
        char op;
        cin >> op;
        
        if(op == 'H')
        {
            int x;
            cin >> x;
            add_h(x);
        }
        else if(op == 'I')
        {
            int k, x;
            cin >> k >> x;
            add_k(k,x);
        }
        else
        {
            int k;
            cin >> k;
            if(!k) h = ne[h];
            else d_k(k);
        }
    }
    
    for(int i = h; ~i; i = ne[i])
        cout << e[i] << ' ';
}

模拟双链表

#include <bits/stdc++.h>
using namespace std;
const int N = 1e5+10;
int e[N];
int l[N], r[N], idx = 2;
void init()
{
    r[0] = 1;
    l[1] = 0;
}
void add(int k, int x)
{
    e[idx] = x;
    l[idx] = k;
    r[idx] = r[k];
    l[r[k]] = idx;
    r[k] = idx;
    //l[r[idx]] = idx;
    idx++;
}
void dele(int k)
{
    r[l[k]] = r[k];
    l[r[k]] = l[k];
}
int main()
{
    int m;
    cin >> m;
    
    init(); int k, x;
    for(int i = 1; i <= m; i++)
    {
        string op;
        cin >> op;
        
        if(op == "L")
        {
            cin >> x;
            add(0, x);
        }
        else if(op == "R")
        {
            cin >> x;
            add(l[1], x);
        }
        else if(op == "D")
        {
            cin >> k;
            dele(k+1);
        }
        else if(op == "IL")
        {
            cin >> k >> x;
            add(l[k+1], x);
        }
        else
        {
            cin >> k >> x;
            add(k+1, x);
        }
    }
    
    for(int i = r[0]; i != 1; i = r[i])
        cout << e[i] << ' ';
}


http://www.kler.cn/news/343358.html

相关文章:

  • 零样本主题驱动图像生成新方法!EZIGen:在保持灵活性的同时保留主题身份!
  • 【AI大模型】《多模态持续学习》最新进展综述
  • QTday4
  • 快来了解 Java 内存数据库 H2,不要错过哦
  • 免杀对抗—javaASMMSF源码特征修改汇编调用CS内联C
  • Qt源码-Qt多媒体音频框架
  • 《Image Processing GNN: Breaking Rigidity in Super-Resolution》CVPR2024
  • 鸿蒙OS投票机制
  • 『网络游戏』进入游戏主城UI跳转主城【26】
  • 动态规划-路径问题——931.下降路径最小和
  • AI测试入门:认识Graph RAG
  • 京东零售数据湖应用与实践
  • Graphics2D 打包在Linux运行时中文乱码,展示成方格
  • JavaScript轮播图实现
  • 两个数相加(c语言)
  • MySQL修改字段卡住问题总结及解决方法
  • hive数据库||的用法、hive数据库字符串拼接、concat函数、concat_ws函数
  • Patroni配置3-环境变量配置设置
  • 【操作系统】四、文件管理:1.文件系统基础(文件属性、文件逻辑结构、文件物理结构、文件存储管理、文件目录、基本操作、文件共享、文件保护)
  • QT C++ 软键盘/悬浮键盘/触摸屏键盘的制作