用数组模拟单链表,栈,队列
作者:
Agone
,
2022-02-07 18:32:21
,
所有人可见
,
阅读 193
//用数组模拟单链表 主要是速度快
#include<iostream>
using namespace std;
const int N=100010;
//head 头节点的下标, e[N] 存的是val , ne[N] 存的是指针
//idx 表示存储当前已经用到了哪个点
int head,e[N],ne[N],idx;
//链表初始化
void init()
{
head=-1;
idx=0;
}
//在头节点插入一个数x
void add_to_head(int x)
{
e[idx]=x;
ne[idx]=head;
head=idx;
idx ++;
}
//将 x 插到下表是 k 的点的后面
void add(int k,int x)
{
e[idx]=x;
ne[idx]=ne[k];
ne[k]=idx;
idx++;
}
//将下标是k的点后面的点删掉
void remove(int k)
{
ne[k]=ne[ne[k]];
}
数组模拟栈
#include<iostream>
using namespace std;
const int N=100010;
int stk[N],tt;//tt表示栈顶下标
//在栈顶插入一个数
stk[++tt]=x;
//删除(弹出)一个数
tt--;
//判断栈是否为空
if(tt>0) not empty
else empty
//栈顶
stk[tt];
数组模拟队列
#include<iostream>
using namespace std;
const int N=100010;
int q[N],hh,tt=-1;//hh 表示队头,tt 表示队尾
//在队尾插入一个数
q[++tt]=x;
//在队头弹出(删除)一个数
hh++;
//判断是否为空
if(hh<=tt) not empty;
else empty;
//取出队头元素
q[hh];
//取出队尾元素
q[tt];