怀旧书本
#include <bits/stdc++.h>
using namespace std;

const int N = 1e5 + 10;
int e[N], l[N], r[N], idx;

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

void add(int k, int v) {
    // 1   2   3   4
    //     k 
    e[idx] = v;
    r[idx] = r[k];
    l[idx] = k;
    l[r[k]] = idx;
    r[k] = idx;
    ++idx;
}

void remove(int k) {
    // 1   2   3 
    //     k
    r[l[k]] = r[k];
    l[r[k]] = l[k];
}

int main() {
    int n;
    cin >> n;
    string op;
    init();
    int t , k;
    for (int i = 0; i < n; ++i) {
        cin >> op;
        if (op == "L") {
            cin >> t;
            add(0, t);
        } else if (op == "R") {
            cin >> t;
            add(l[1], t);
        } else if (op == "D") {
            cin >> k;
            remove(k + 1);
        } else if (op == "IL") {
            cin >> k >> t;
            add(l[k + 1], t);
        } else if (op == "IR") {
            cin >> k >> t;
            add(k + 1, t);
        }
    }
    
    int cnt = 0;
    for (int i = r[0]; i != 1; i = r[i]) {
        cout << e[i] << " ";
    }
    return 0;
}
本文为原创文章,欢迎分享,勿全文转载,如果内容你实在喜欢,可以加入收藏夹,说不定哪天故事又继续更新了呢。
本文地址:https://qoogle.top/double-linked-list/
最后修改日期:2020年5月1日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。