模拟原因
笔试题里面出现的多
结构体的话速度有些慢
单链表
常用邻接表:用于存储图和树
结构
- 头节点地址 head,采用数组的第一个元素
- 值
- 下一个数值地址
- 一个变量:用于存放当前使用的指针
空集用 -1 表示
函数
- 初始化 init
- 头节点位置插入 add_to_head
- x插入k节点后边 add
- 删除k后面的点 remove
学习代码
#include <iostream>
using namespace std;
const int N = 100001;
int curptr;
int value[N], ne[N];
//初始化单链表
void init()
{
ne[0] = -1;
curptr = 1;//第一个数值(操作数)
}
//插入(第K个节点后面)
void add(int k, int x)
{
value[curptr] = x;
ne[curptr] = ne[k];
ne[k] = curptr++;
}
//删除第K个后面的一个
void remove(int k)
{
ne[k] = ne[ne[k]];
}
int main()
{
int n, x, k;
char i;
cin >> n;
init();
while(n--)
{
cin >> i;
if(i == 'H')
{
cin >> x;
add(0, x);
}
if(i == 'D')
{
cin >> k;
remove(k);
}
if(i == 'I')
{
cin >> k >> x;
add(k, x);
}
}
//输出
curptr = ne[0];
while(curptr != -1)
{
printf("%d ", value[curptr]);
curptr = ne[curptr];
}
return 0;
}