1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
| #include<bits/stdc++.h> using namespace std;
const int N = 100010;
int head, e[N], ne[N], idx;
void init(){ head = -1; idx = 0; }
void add_to_head(int x){ e[idx] = x, ne[idx] = head, head = idx ++; }
void add(int x, int k){ e[idx] = x; ne[idx] = ne[k]; ne[k] = idx; idx ++; }
void remove(int k){ ne[k] = ne[ne[k]]; }
int main(int argc, char const *argv[]) { init(); int n; cin >> n; while (n--){ int k, x; char op;
cin >> op; if (op == 'H'){ cin >> x; add_to_head(x); } else if (op == 'D'){ cin >> k; if(!k) head = ne[head]; else remove(k - 1); } else { cin >> k >> x; add(k - 1, x); } }
for(int i = head; i != -1; i = ne[i]) cout << e[i] << ' '; cout << endl;
return 0; }
|