class Virtul_List {
public:
    int data[100000], pre[100000], nex[100000], head, end, sz;
    bool exist[100000];
    Virtul_List() {};
    void build(int * a, int n) {
        for (int i = 0; i < n; i++) data[i] = a[i];
        head = 0, end = -1, sz = n;
        for (int i = 1; i < n; i++) pre[i] = i - 1;
        for (int i = 0; i < n; i++) nex[i] = i + 1;
        nex[n - 1] = end;
        memset(exist, true, sizeof(exist));
    }
    void insert(int x, int w) {
        int l = x, r = nex[x];
        data[sz] = w;
        nex[l] = sz, pre[sz] = l, nex[sz] = r, pre[r] = sz;
        sz++;
    }
    void erase(int x) {
        if (x == end) return;
        if (x >= sz || !exist[x]) return;
        if (x == head) {
            head = nex[x];
        } else {
            int l = pre[x], r = nex[x];
            nex[l] = r, pre[r] = l;
        }
        exist[x] = false;
    }
    int next(int x) {
        return nex[x];
    }
};

 

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-08-22
  • 2021-10-29
  • 2021-06-12
  • 2021-08-06
  • 2021-08-21
猜你喜欢
  • 2021-06-13
  • 2021-08-15
  • 2022-12-23
  • 2021-09-03
  • 2022-02-12
  • 2021-07-14
  • 2021-07-21
相关资源
相似解决方案