第七周 项目 3

来源:互联网 发布:232数据盒rs-100 编辑:程序博客网 时间:2024/06/06 18:43

liqueue.h 代码

/**Copyright (c) 2017, 烟台大学计算机与控制工程学院*All rights reserved.*文件名称:*作    者:陈军正*完成日期:2017年10月22日*版 本 号:v1.0**/#define MaxSize 5typedef 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);  //出队

main.cpp 代码

#include <malloc.h>#include "liqueue.h"#include <iostream>using namespace std;int main(){ElemType a, x;SqQueue *qu;    //定义队列InitQueue(qu);  //队列初始化while (1){cout<<"输入a值(输入正数进队,负数出队,0结束):";cin >> a;if (a>0){if (!enQueue(qu, a))cout << "  队列满,不能入队" << endl;;}else if (a<0){if (!deQueue(qu, x))cout<<"  队列空,不能出队";}else if (a==0){break;}}return 0;}

liqueue.cpp 代码

#include <malloc.h>#include "liqueue.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;}
运行结果

总结:熟悉环形队列基本运算的运用