算法提高 队列操作

来源:互联网 发布:mdzz什么意思网络用语 编辑:程序博客网 时间:2024/04/30 04:56
问题描述
  队列操作题。根据输入的操作命令,操作队列(1)入队、(2)出队并输出、(3)计算队中元素个数并输出。
输入格式
  第一行一个数字N。
  下面N行,每行第一个数字为操作命令(1)入队、(2)出队并输出、(3)计算队中元素个数并输出。
输出格式
  若干行每行显示一个2或3命令的输出结果。注意:2.出队命令可能会出现空队出队(下溢),请输出“no”,并退出。
样例输入
7
1 19
1 56
2
3
2
3
2
样例输出
19
1
56
0
no
数据规模和约定

  1<=N<=50


问题描述:特别基础的队列操作问题,但是有一个地方没搞对,卡了好久好久,就是在当队列front==rear时应该直接退出程序,一开始想的可以继续插入元素的,但是好像不行,只要输出了“no”就必须要退出程序


#include<stdio.h>#include<string.h>#include<iostream>using namespace std;long long int queue[200000];int head,rear;int main(){int N,n,num;head = rear = 0;memset(queue,0,sizeof(queue));scanf("%d",&N);while(N--){scanf("%d",&n);switch(n){case 1:scanf("%lld",&num);queue[rear++] = num;break;case 2:long long int tmp;if (head<rear){tmp = queue[head++];printf("%lld\n",tmp);}else if (head==rear){printf("no\n");return 0;}break;case 3:printf("%d\n",rear-head);break;}}return 0;} 


0 0
原创粉丝点击