数据结构笔记归档
因为学算法主要是为了做题打打力扣周赛,为了效率高多数数据结构使用数组模拟。
链表
1 |
|
- 双链表tip: 当需在k左边插入元素时,调用insert(l[k],x)即可
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
using namespace std;
const int N = 1e5+50;
int l[N],r[N],e[N],idx;
void init(){
//0左端点,1右端点
r[0] = 1,l[1] = 0;
idx = 2;
}
//在节点k后插入x
void inset(int k,int x){
e[idx] = x;
l[idx] = k;
r[idx] = r[k];
l[r[k]] = idx,r[k] = idx++;
}
//删除节点k
void remove(int k){
l[r[k]] = l[k];
r[l[k]] = r[k];
}
栈和队列
栈: http://zsenhe.com/article/25
1
2
3
4
5
6
7
8
9
10
11
12
13
using namespace std;
const int N = 1e5+10;
int stk[N],tt=0;
//将x压入栈
stk[++tt] = x;
//弹出栈顶元素
int tt = stk[tt--];
//判断栈不为空
return tt>0;队列 http://zsenhe.com/article/27
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using namespace std;
const int N = 1e5+10;
int q[N];
//队头索引
int hh;
//队尾索引
int tt = -1;
//加入队列
void push(int x){
q[++tt] = x;
}
//出队
int pop(){
return q[hh++];
}
//判断队列是否为空
return hh > tt;
..整理中
本文标题:数据结构笔记归档
文章作者:meteor
发布时间:2022-11-03
最后更新:2022-11-03
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!
分享