蓝桥备战准备记录 2

标题 数组实现单链表,栈,队列

开门见山的说,
单链表用数组的模式实现需要有俩个东西,而用数组去实现单链表最大原因就是减去new的操作。数组实现单链表需要和结构体链表差不多也需要一个数据域和一个指针域
cosnt int maxn = 1e5+5;
数据域 定义数组 val[maxn],指针域 定义数组 ne[maxn]
链表需要一个头结点 即head,接着我们还需要一个坐标来确定这个数组的位置有没有被用过
定义 idx。

然后初始化操作 就是 head = -1, idx = 0

void init()
{
    head = -1;
    idx = 0;
}

初始化过后,首先链表要执行的基本操作就是增加一个节点

void add(int x)//实现头插法
{
    val[idx] = x;//此时idx未用,用上idx存储数据域
    ne[idx] = head;//让本节点指向下一个指针
    head = idx ++;//让头节点向前移动
}

增的操作结束后,进行删除操作

void del(int k)//删除第k个数后面一个数
{
    ne[k] = ne[ne[k]];
}

接着插入操作

void insert(int k,int x)//在第k个数后面插入一个数
{
    val[idx] = x;
    ne[idx] = ne[ne[k]];
    ne[x] = idx ++;
}

######################################################################

接着用数组实现栈操作
非常简单,首先栈的核心就是后入先出
用数组模拟的话 就定义一个 stk[],然后,我们还需要一个栈顶来存入这个栈
简单用top 来当做栈顶 即 top = -1;

int stk[maxn],top = -1;//建立起一个简单栈

接着是推入栈的操作

int x;
cin >> x;
stk[++top] = x;

然后是出栈的操作

--top;

然后就是取栈顶的操作

stk[top];

最后是判断栈是否空

if(top == -1)

######################################################################
接着是用数组实现队列
队列的关键就是先入先出
因此,我们需要一个队头和一个队尾巴,hh = 0,tt = -1

int hh = 0, tt = -1;
int queue[maxn];

然后就是入队操作

 int x;
 cin >> x;
 queue[++tt] = x;

然后是出队的操作

 ++hh;

最后是判断队列是否为空

if(hh > tt)//队空

######################################################################

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值