单链表

实现一个单链表,链表初始为空,支持三种操作:

  1. 向链表头插入一个数;
  2. 删除第 kk 个插入的数后面的数;
  3. 在第 kk 个插入的数后插入一个数。

现在要对该链表进行 MM 次操作,进行完所有操作后,从头到尾输出整个链表。

#include <iostream>
using namespace std;
const int N = 100010;
int e[N], ne[N], idx, h = -1;

void add (int x) {
    e[idx] = x;
    ne[idx] = h;
    h = idx++;
}

void remove (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 n;
    cin >> n;
    while (n--) {
        char c;
        cin >> c;
        if (c == 'H') {
            int x;
            cin >> x;
            add (x);
        }
        else if (c == 'D') {
            int k;
            cin >> k;
            if (k) remove (k - 1);
            else h = ne[h];
        }
        else {
            int k, x;
            cin >> k >> x;
            add_k (k - 1, x);
        }
    }
    
    for (int i = h; i != -1; i = ne[i]) cout << e[i] << " ";
    return 0;
}

  

posted @ 2022-11-30 21:55  !&&||  阅读(22)  评论(0)    收藏  举报