数据结构:双链表

数据结构:双链表

题目描述

输入样例

复制代码
10
R 7
D 1
L 3
IL 2 10
D 3
IL 2 7
L 8
R 9
IL 4 7
IR 2 2

输出样例

复制代码
8 7 7 3 2 9

参考代码

cpp 复制代码
#include <iostream>

using namespace std;

const int N = 100010;

int m;
int idx, e[N], l[N], r[N];

void init()
{
    r[0] = 1;
    l[1] = 0;
    idx = 2;
}

void insert(int k, int x)
{
    e[idx] = x;
    l[idx] = k; r[idx] = r[k];
    l[r[k]] = idx; r[k] = idx;
    idx++;
}

void remove(int k)
{
    l[r[k]] = l[k];
    r[l[k]] = r[k];
}

int main()
{
    init();
    
    cin >> m;
    while (m--)
    {
        int k, x;
        string op;
        cin >> op;
        if (op == "L")
        {   
            cin >> x;
            insert(0, x);
        }
        else if (op == "R")
        {
            cin >> x;
            insert(l[1], x);
        }
        else if (op == "D")
        {   
            cin >> k;
            remove(k + 1);
        }
        else if (op == "IL")
        {
            cin >> k >> x;
            insert(l[k + 1], x);
        }
        else
        {
            cin >> k >> x;
            insert(k + 1, x);
        }
    }
    for (int i = r[0]; i != 1; i = r[i]) cout << e[i] << ' ';
    cout << endl;
    
    return 0;
}
相关推荐
会周易的程序员5 小时前
microLog 后端开发指南
开发语言·c++·物联网·设计模式·日志·iot·aiot
星空露珠5 小时前
迷你世界UGc3.0脚本Wiki[剧情动画模块管理接口 Timeline]
开发语言·数据结构·算法·游戏·lua
汉克老师5 小时前
GESP2026年6月认证C++二级( 第三部分编程题(2、菱形))精讲
c++·找规律·绘制图形·对角线·双重循环
☆cwlulu6 小时前
try-throw-catch异常捕获流程
开发语言·c++
王老师青少年编程6 小时前
2026年6月GESP真题及题解(C++五级):排排坐
c++·题解·真题·gesp·五级·2026年6月·排排坐
东华万里6 小时前
第31篇 数据结构入门:顺序表
数据结构·大学生专区
郝学胜-神的一滴7 小时前
Qt 高级编程 034:深耕QWidget底层内核—彻底吃透无边框窗口设计核心原理
开发语言·c++·qt·程序人生·软件开发·用户界面
不会写代码的ys7 小时前
C++复习篇
java·开发语言·c++
Vect__7 小时前
Go 数据结构 slice 深度剖析
开发语言·数据结构·golang
aichitang20247 小时前
数论变换(NTT)
c++·算法·fft·ntt