第7周项目3--负数让正数出队

/*
*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可能出现在自己编写的算法库里面。)


结果附图:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值