/*
*COPYRIGTH (c) 2017, YTU CS
*All rigth reserve
*作者:王铭泽
*完成日期:2017.10.19
*版本号:v1.0
*
*问题描述:
设从键盘输入一整数序列a1,a2,…an,试编程实现:当ai>0时,ai进队,当ai<0时,将队首元素出队,
当ai=0时,表示输入结束。要求将队列处理成环形队列,使用环形队列算法库中定义的数据类型及算法,程序中只
包括一个函数(main函数),入队和出队等操作直接在main函数中调用即可。当进队出队异常(如队满)时,要打
印出错信息。
*注:所有代码除了标准命名外全为自己coding.
*/
#include <stdio.h>
#include "head.h"
int main()
{
ElemType a,x;
SqQueue *s;
InitQueue(s);
while(1)
{
printf("请输入整数(0为退出):");
scanf("%d",&a);
if(a>0)
{
//判断与入队一起操作,熟练这个逻辑--如果队满返回错误信息,不满则入队。
if(!enQueue(s,a))
printf("队满,无法入队。\n");
}
else if (a<0)
{
if(!deQueue(s,x))
{
printf("队空,无法出队。\n");
}
}
else
break;
}
return 0;
}
本题是环形队列的应用,主要考察了我们队算法库的使用。
我在做题的时候出现一个bug:只要是一输入负号就显示队空,即使队不为空。在检查对照了老师的代码答案后我发现是算法库出队函数的返回值两个都为false。。。。很细节的地方。如果当时算法库测试不够细致的话就会出现这种问题。(不过这也提供了一个思维方式:每当main函数没太大问题的时候,bug可能出现在自己编写的算法库里面。)
结果附图: