算法提高 队列操作
2017-01-19 15:45
323 查看
问题描述
队列操作题。根据输入的操作命令,操作队列(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
队列操作题。根据输入的操作命令,操作队列(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
#include<stdio.h> #define MAX 100 typedef struct { long long int data[MAX]; int front,rear; }SEQUEUE; int inqueue(SEQUEUE *q,int x) { if(q->front==(q->rear+1)%MAX) { return 0; } else { q->rear=(q->rear+1)%MAX; q->data[q->rear]=x; } } int outqueue(SEQUEUE *q) { if(q->front==q->rear) { printf("no\n"); return 0; } else { q->front=(q->front+1)%MAX; printf("%lld\n",q->data[q->front]); } } void countqueue(SEQUEUE *q) { int sum; sum=(q->rear-q->front+MAX)%MAX; printf("%d\n",sum); } int main() { int flag,x,n; SEQUEUE a,*p; p=&a; a.front=-1; a.rear=-1; scanf("%d",&n); while(n--) { scanf("%d",&flag); switch(flag) { case 1: scanf("%lld",&x); inqueue(p,x); break; case 2: if(outqueue(p)==0) { return 0; //栈满一定要退出,不能再操作。 } break; case 3: countqueue(p); break; } } return 0; }
相关文章推荐
- 蓝桥 ADV-233 算法提高 队列操作 【STL】
- 蓝桥杯 算法提高 队列操作(Java解题)
- 蓝桥杯 算法提高 队列操作
- 算法提高 队列操作(Queue)
- 蓝桥 ADV-233 算法提高 队列操作 【STL】
- 蓝桥杯练习:算法提高 队列操作
- 算法提高 队列操作
- 算法提高 ADV-233 队列操作
- 蓝桥杯算法提高-队列操作
- 蓝桥杯 算法提高 队列操作
- 算法提高 队列操作
- 算法提高 队列操作
- 算法提高 队列操作
- 算法提高 队列操作
- 蓝桥杯-算法提高-队列操作
- 算法提高 队列操作
- 蓝桥杯算法提高——队列操作(STL)
- 蓝桥杯 ADV-233 算法提高 队列操作
- 蓝桥杯 算法提高 队列操作
- 蓝桥杯 算法提高 队列操作