算法提高 队列操作

/*问题描述
?队列操作题。根据输入的操作命令,操作队列(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 -- ;  
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值