/*问题描述
?队列操作题。根据输入的操作命令,操作队列(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>
#include<stdlib.h>
#define N ( 50 )
typedef
struct
{
int gs ;
int t_xb ;
int dl[N] ;
}
queue_t;
enum
{
RD = 1 ,
CD = 2 ,
SC = 3 ,
};
void rudui( queue_t* );
void chudui( queue_t* );
void Output( queue_t* );
int main(void)
{
queue_t q = { 0 , 0 } ;
int n ;
scanf("%d" , & n ) ;
while( n -- )
{
int ml ;
scanf("%d" , &ml ) ;
switch( ml )
{
case RD : rudui( &q );
break ;
case CD : chudui( &q );
break ;
case SC : Output( &q );
break ;
}
}
return 0 ;
}
void Output( queue_t * p_q)
{
printf("%d\n" , p_q -> gs ) ;
}
void rudui( queue_t * p_q)
{
scanf("%d", p_q -> dl + p_q->t_xb + p_q->gs ++ ) ;
}
void chudui( queue_t * p_q)
{
if( p_q -> gs == 0 )
{
puts("no") ;
exit(0);
}
printf("%d\n" , p_q -> dl[p_q->t_xb]) ;
p_q -> t_xb = ( p_q -> t_xb + 1) % N ;
p_q -> gs -- ;
}