加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
2021.11.13.cpp 1.16 KB
一键复制 编辑 原始数据 按行查看 历史
#define _CRT_SECURE_NO_WARNINGS
// 数组模拟单链表
#include<iostream>
using namespace std;
const int N = 1e5 + 10;
// head表示头节点下标
// e[i] 表示节点i的值是多少
// ne[i] 表示节点i的next指针是多少(节点i的下一个点的下标是什么)
// idx 存储我们当前已经用到了哪个点(0,1,2...)
int head, e[N], ne[N], idx;
// 初始化
void initialize() {
head = -1;
idx = 0;
}
// 将x插到头节点
void add_to_head(int x) {
e[idx] = x;
ne[idx] = head;
head = idx++;
}
void add(int k, int x) {
e[idx] = x;
ne[idx] = ne[k];
ne[k] = idx++;
}
void remove(int k) {
ne[k] = ne[ne[k]];
}
int m;
int main() {
initialize();
cin >> m;
while (m--) {
char op;
cin >> op;
int x, k;
if (op == 'H') {
cin >> x;
add_to_head(x);
}
else if (op == 'I') {
cin >> k >> x;
add(k - 1, x); // k-1, 因为0号点是第一个插入的点
}
else {
cin >> k;
if (!k) {
head = ne[head];
}
else remove(k - 1);
}
}
for (int i = head; i != -1; i = ne[i]) {
cout << e[i] << " ";
}
return 0;
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化