データ構造——単鎖表(C++版)
11426 ワード
// head ,e[] ( ),ne[] next ( ),idx
int head, e[N], ne[N], idx;
//
void init()
{
head = -1;
idx = 0;
}
// a
void insert(int a)
{
e[idx] = a, ne[idx] = head, head = idx ++ ;
}
// ,
void remove()
{
head = ne[head];
}
#include
using namespace std;
const int N = 100010;
int m;
int n[N], ne[N], idx, head;
//
void init()
{
head = -1;
idx = 0;
}
//
void add_to_head(int x)
{
n[idx] = x; ne[idx] = head; head = idx ++;
}
// k
void add(int k, int x)
{
n[idx] = x;
ne[idx] = ne[k];
ne[k] = idx ++;
}
// k
void remove_1(int k)
{
ne[k] = ne[ne[k]];
}
int main()
{
cin >> m;
init();
int k, x;
char op;
while(m--)
{
cin >> op;
if(op == 'H')
{
cin >> x;
add_to_head(x);
}
else if(op == 'D')
{
cin >> k ;
if(!k) head = ne[head];
remove_1(k - 1); // , k k-1
}
else
{
cin >> k >> x;
add(k - 1, x);
}
}
for(int i = head; i != -1; i = ne[i]) cout << n[i] << ' ';
return 0;
}
[^1]注:この文書のコードとテンプレートはwww.acwing.から来ています.com