第七周项目3-负数把正数赶出队列

来源:互联网 发布:练级的网络手机游戏 编辑:程序博客网 时间:2024/06/11 15:59

问题描述:设从键盘输入一整数序列a1,a2,…an,试编程实现:当ai>0时,ai进队,当ai<0时,将队首元素出队,当ai=0时,表示输  
          入结束。要求将队列处理成环形队列,使用算法库中定义的数据类型及算法,程序中只包括一个函数(main函数),入队和  
          出队等操作直接写在main函数中即可。当进队出队异常(如队满)时,要打印出错信息。  
输入描述:整数  
程序输出:队空进队,队满打印出错信息。  
*/    
头文件及功能函数详见【顺序环形队列算法库】
注:为实现本项目功能,请将sqqueue.h中的ElemType由char改为int
main函数代码:
[cpp] view plain copy
#include "sqqueue.h"    
int main()    
{    
    ElemType e;    
    SqQueue *q;    
    printf("(1)初始化队列q\n");    
    InitQueue(q);    
    printf("(2)依次进队列元素a,b,c\n");    
    if (enQueue(q,'a')==0) printf("队满,不能进队\n");    
    if (enQueue(q,'b')==0) printf("队满,不能进队\n");    
    if (enQueue(q,'c')==0) printf("队满,不能进队\n");    
    printf("(3)队列为%s\n",(QueueEmpty(q)?"空":"非空"));    
    if (deQueue(q,e)==0)    
        printf("队空,不能出队\n");    
    else    
        printf("(4)出队一个元素%c\n",e);    
    printf("(5)队列q的元素个数:%d\n",QueueLength(q));    
    printf("(6)依次进队列元素d,e,f\n");    
    if (enQueue(q,'d')==0) printf("队满,不能进队\n");    
    if (enQueue(q,'e')==0) printf("队满,不能进队\n");    
    if (enQueue(q,'f')==0) printf("队满,不能进队\n");    
    printf("(7)队列q的元素个数:%d\n",QueueLength(q));    
    printf("(8)出队列序列:");    
    while (!QueueEmpty(q))    
    {    
        deQueue(q,e);    
        printf("%c ",e);    
    }    
    printf("\n");    
    printf("(9)释放队列\n");    
    DestroyQueue(q);    
    return 0;    
}    

知识点总结:
定义顺序环形队列算法库要理解队首和队尾指针的用法以及环形结构这一特殊形式的实现。

学习心得
初始化时队首和队尾指针要赋值为零,这一点和栈有区别。

0 0
原创粉丝点击