链表和栈相关知识点 作为参考记忆
#include <iostream>
using namespace std;
const int N = 100010;
int m;
int e[N], l[N], r[N], idx;
//初始化
void int()
{
//0表示左端点,1表示右端点
r[0] = 1, l[1] = 0;
idx = 2;
}
//在下标是k的点的右边插入x
void add(int k, int x)
{
e[idx] = x;
r[idx] = r[k];
l[idx] = k;
l[r[k]] = idx;
r[k] = idx;
}
//删除第k个点
void remove(int k)
{
r[l[k]] = r[k];
l[r[k]] = l[k];
}
// **************************栈
int stk[N], tt;
//插入
stk[ ++ tt] = x;
//弹出
tt -- ;
//判断栈是否为空
if (tt ++ ) not empty;
else empty;
//栈顶
stk[tt];
// **************************队列
//在队尾插入元素,在队头弹出元素
int q[N], hh, tt = -1;
//插入
q[ ++ tt] = x;
//删除
hh ++;
//判断队列是否为空
if(hh < tt) not empty;
else empty;
//取出队头元素
q[hh]
//取出队尾元素
q[tt]