当出现以下需求:
在O(1)时间内实现增/删/改/查,可以使用数组模拟链表
数组模拟链表相当于数组+链表
数组:O(1)查找/修改,但是删/查为O(n)
链表:O(1)删/查,但是查找/修改为O(n)
使用数组模拟双向链表的前提条件:增/删不改变原有索引。
struct s{
int info;
int pre;
int next;
}links[N];
//add同理
void delete(int i){
int a = links[i].pre,b = links[i].next;
links[a].next = b;
links[b].pre = a;
}
//修改同理
int find(int i){
return links[i].info;
}