原题链接:蓝桥杯算法提高VIP-队列操作
解题思路:使用数组模拟的思想来解题。
定义一个数组来表示我们的队列,然后定义队头和队尾,一般来讲非循环队列队尾设置为-1,循环队列的队尾可以设置为0
当进行插入操作时,只需队尾++即可,删除元素时只需让队头前移,判断是否为空可以看队头是否超过队尾即可判断
统计当前元素个数,因为队尾为-1开始,因此需要tt - hh + 1
注意事项:需要注意的是队尾的下标是从哪里开始的和最后统计元素时应该如何去统计!
参考代码:
#include<iostream>
using namespace std;
const int N = 100010;
int q[N];
int hh;
int tt = -1;
void insert(int x)
{
q[++ tt] = x;
}
void pop()
{
cout << q[hh] << endl;
hh ++;
}
int main()
{
int n;
cin >> n;
while(n -- )
{
int op;
cin >> op;
if(op == 1)
{
int x;
cin >> x;
insert(x);
}
else if(op == 2)
{
if(hh > tt)
{
cout << "no" << endl;
break;
}
pop();
}
else if(op == 3)
{
cout << tt - hh + 1 << endl;
}
}
return 0;
}0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复