第七周项目3-负数把正数赶出队列
2015-10-17 10:00
232 查看
问题及代码:
设从键盘输入一整数序列a1,a2,…an,试编程实现:当ai>0时,ai进队,当ai<0时,将队首元素出队,当ai=0时,表示输入结束。要求将队列处理成环形队列,使用环形队列算法库中定义的数据类型及算法,程序中只包括一个函数(main函数),入队和出队等操作直接在main函数中调用即可。当进队出队异常(如队满)时,要打印出错信息。
头文件squeue.h代码:
main.cpp代码:
运行结果:
知识点总结:
初始化一个队列,队列为空,题目要求输入附属出队列,当第一个输入的数为复数时,没有数据可输出,提示“队列空,不能出队”,队列定义的最大空间是5,所以当输入5个正数时,队列慢,提示“队列满,不能入队”。
设从键盘输入一整数序列a1,a2,…an,试编程实现:当ai>0时,ai进队,当ai<0时,将队首元素出队,当ai=0时,表示输入结束。要求将队列处理成环形队列,使用环形队列算法库中定义的数据类型及算法,程序中只包括一个函数(main函数),入队和出队等操作直接在main函数中调用即可。当进队出队异常(如队满)时,要打印出错信息。
头文件squeue.h代码:
#ifndef SQQUEUE_H_INCLUDED #define SQQUEUE_H_INCLUDED #define MaxSize 5 typedef int ElemType; typedef struct { ElemType data[MaxSize]; int front,rear; /*队首和队尾指针*/ } SqQueue; void InitQueue(SqQueue *&q); //初始化顺序环形队列 void DestroyQueue(SqQueue *&q); //销毁顺序环形队列 bool QueueEmpty(SqQueue *q); //判断顺序环形队列是否为空 int QueueLength(SqQueue *q); //返回队列中元素个数,也称队列长度 bool enQueue(SqQueue *&q,ElemType e); //进队 bool deQueue(SqQueue *&q,ElemType &e); //出队 #endif // SQQUEUE_H_INCLUDED
main.cpp代码:
#include <stdio.h> #include <malloc.h> #include "sqqueue.h" void InitQueue(SqQueue *&q) //初始化顺序环形队列 { q=(SqQueue *)malloc (sizeof(SqQueue)); q->front=q->rear=0; } void DestroyQueue(SqQueue *&q) //销毁顺序环形队列 { free(q); } bool QueueEmpty(SqQueue *q) //判断顺序环形队列是否为空 { return(q->front==q->rear); } int QueueLength(SqQueue *q) //返回队列中元素个数,也称队列长度 { return (q->rear-q->front+MaxSize)%MaxSize; } bool enQueue(SqQueue *&q,ElemType e) //进队 { if ((q->rear+1)%MaxSize==q->front) //队满上溢出 return false; q->rear=(q->rear+1)%MaxSize; q->data[q->rear]=e; return true; } bool deQueue(SqQueue *&q,ElemType &e) //出队 { if (q->front==q->rear) //队空下溢出 return false; q->front=(q->front+1)%MaxSize; e=q->data[q->front]; return true; } int main() { ElemType a,x; SqQueue *qu; //定义队列 InitQueue(qu); //队列初始化 while (1) { printf("输入a值(输入正数进队,负数出队,0结束):"); scanf("%d", &a); if (a>0) { if (!enQueue(qu,a)) printf(" 队列满,不能入队\n"); } else if (a<0) { if (!deQueue(qu, x)) printf(" 队列空,不能出队\n"); } else break; } return 0; }
运行结果:
知识点总结:
初始化一个队列,队列为空,题目要求输入附属出队列,当第一个输入的数为复数时,没有数据可输出,提示“队列空,不能出队”,队列定义的最大空间是5,所以当输入5个正数时,队列慢,提示“队列满,不能入队”。
相关文章推荐
- ZooKeeper 集群搭建
- Linux运行变量中的命名脚本
- [洛谷1135]奇怪的电梯
- 使用 Ansible 高效交付 Docker 容器
- Android Handler源码分析
- 笔记
- 更新到Xcode7.0后遇到的问题
- 二、verilogHDL行为描述建模
- iOS面试题
- 16bit灰度图像映射到8bit显示
- java入门第七天 数组开个头 创建数组的几种方式和注意事项
- Ubuntu中安装ZMQ以及pyzmq
- 绿盟【按要求打印字母表】
- 小小君的C语言第六课
- QTableWidget 详细使用
- C语言预编译指令的用法
- App Webview与内嵌web交互实现
- 现在仅仅是一个时代之后,终端
- 动手动脑和课后作业
- Glide加载圆形图片