单链表和双链表
单链表
使用数组模拟单链表
使用一个数组存储值, 另一个数组存储next
邻接表 存储图和树
e[idx] = val;
ne[idx] = next;
双链表
优化某些问题
int l[idx], r[idx]
下标为0表示 左端点, 下标为1表示右端点
栈
//插入
stk[++tt] = x;
//弹出
tt--
//判断栈是否为空
if (tt > 0) not empty
else empty
//栈顶
skt[tt]
队列
//在队尾插入元素,在队头弹出元素
int q[N], hh, tt = -1
//插入
q[++tt] = x;
//弹出
hh++;
//判断队列是否为空
if(hh <= tt) not empty
//取出队头元素
q[hh]
单调栈
求左边最小最近的元素
单调队列