AcWing 826. 单链表
原题链接
简单
作者:
acw_yxy
,
2020-10-31 10:25:22
,
所有人可见
,
阅读 348
C++ 模板题
// 使用数组来模拟链表
#include <iostream>
using namespace std;
int head = -1, idx = 0;
int N = 100010;
int val[100010];
int nex[100010];
// 添加到头结点,head存储头节点,-1代表实际链表中的NULL
void add_to_head(int x)
{
val[idx] = x;
nex[idx] = head;
head = idx++;
}
// 插入,第k个数下标为k-1
void add(int k, int x)
{
val[idx] = x;
nex[idx] = nex[k-1];
nex[k-1] = idx++;
}
// 删除,第k个数小标为k-1
void del(int k)
{
// 删除头节点
if(k == 0) head = nex[head];
else nex[k-1] = nex[nex[k-1]];
}
int main()
{
std::ios::sync_with_stdio(false);
int m;
cin >> m;
while(m--)
{
char a; int b, c;
cin >> a;
if(a == 'H')
{
cin >> b;
add_to_head(b);
}
else if(a == 'I')
{
cin >> b >> c;
add(b, c);
}
else
{
cin >> b;
del(b);
}
}
//输出
for(int i = head; i != -1; i = nex[i])
cout << val[i] << " ";
return 0;
}