收藏 分享(赏)

可扩充循环队列头文件与主程序.doc

上传人:kpmy5893 文档编号:7705590 上传时间:2019-05-24 格式:DOC 页数:5 大小:52.50KB
下载 相关 举报
可扩充循环队列头文件与主程序.doc_第1页
第1页 / 共5页
可扩充循环队列头文件与主程序.doc_第2页
第2页 / 共5页
可扩充循环队列头文件与主程序.doc_第3页
第3页 / 共5页
可扩充循环队列头文件与主程序.doc_第4页
第4页 / 共5页
可扩充循环队列头文件与主程序.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

1、1可扩充循环队列头文件与主程序/可扩充循环队列头文件.h#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define NULL 0#define INFEASIBLE -1#define OVERFLOW -2typedef int Status;/可扩充循环队列- 队列的顺序存储结构#define MAXSIZE 5 /队列初始分配元素#define QUEUEINCREMENT 2 /存储增typedef structQElemType *base; /初始化的动态分配存储空间int front; /头指针,若队列不空,指向

2、队队头元素int rear; /尾指针,若队列不空,指向队队尾元素的下一个位置int queuesize; /当前已分配的空间SqQueue;/*约定:1.队列尾指针为实际末尾无素的下一位置. 2.浪费一个元素空间 ,以“ 队列头指针在队列尾指针的下一位置(指环状的下一位置) 上作为队列呈“满“状态的标志.Q 为空循环队列的判定条件为 :头尾重合 Q.front=Q.rearQ 为满循环队列的判定条件为 :队尾赶上队头 (Q.rear+1)%MAXSIZE=Q.front */Status InitQueue(SqQueue if (!Q.base) exit(OVERFLOW); /存储分配

3、失败Q.front=Q.rear=NULL;Q.queuesize=MAXSIZE;return OK;Status DestroyQueue(SqQueue Q.base=NULL;Q.front=Q.rear=NULL;Q.queuesize=0;return OK;Status ClearQueue(SqQueue return OK;2int QueueLength(SqQueue Q)/4.返回 Q 的元素个数,即队列的长度return (Q.rear-Q.front+Q.queuesize)%Q.queuesize;Status QueueEmpty(SqQueue Q)/5.判循

4、环队列空if (Q.front=Q.rear) return TRUE; /队列空else return ERROR;Status GetHead(SqQueue Q,QElemType /队列空e=Q.baseQ.front; return OK;Status EnQueue(SqQueue if (!Q.base) exit(OVERFLOW); /存储分配失败if (Q.frontQ.rear) /队头指针在队尾指针之前增加空间破坏了原来的循环关系for (int i=Q.queuesize-1; i=Q.front; i-) Q.basei+QUEUEINCREMENT=Q.basei

5、; /将原队列最末存储单元至队头元素依次后移使其重新保持循环关系Q.front+=QUEUEINCREMENT; /队头指针后移Q.queuesize+=QUEUEINCREMENT; /队空间大小增加Q.baseQ.rear=e; /元素插入新的队尾Q.rear =(Q.rear+1)%Q.queuesize; /循环队列队尾指针后移一个位置return OK;Status DeQueue(SqQueue /队列空e=Q.baseQ.front; /队头元素赋给 eQ.front=(Q.front+1)%Q.queuesize; /循环队列队头指针后移一个位置return OK;Status

6、 QueueTraverse(SqQueue if (Q.front=Q.rear) return ERROR;while (i!=Q.rear) visit(Q.basei); i=(i+1)%Q.queuesize; return OK;3/可扩充循环队列主程序.cpp#include #include typedef int QElemType; /循环队列元素类型#include “可扩充循环队列头文件 .h“void print(QElemType e)/显示数据元素coute;void main()SqQueue Q; QElemType e; char c;while (1)co

7、utc;switch(c)case 0: return ;case 1: if (InitQueue(Q) cout“创建空队列成功!“;else cout“创建空队列失败!“endl; break;case 2: if (DestroyQueue(Q) cout“成功销毁队列!“;else cout“销毁队列失败!“; break;case 3: ClearQueue(Q);if (QueueEmpty(Q) cout“队列已清空!“;else cout“队列未被清空!“endl; break;case 4: if (QueueEmpty(Q) cout“队列为空!“;else cout“队

8、列非空!“; break;case 5: cout“队列长为:“QueueLength(Q); break;case 6: if (GetHead(Q,e) cout“队列头元素为:“e; break;case 7: cout“请输入要入队的元素:“; Input(e);if (EnQueue(Q,e) cout“元素成功入队!“;else cout“元素入队失败!“endl; break;case 8: if (DeQueue(Q,e) cout“元素出队成功!“;cout“出队元素为“e; break;case 9: QueueTraverse(Q,print); break;defaul

9、t : break;coutendl;41 建空队 2 销毁 3 清空 4 判空 5 求长 6 取队头 7 入队 8 出队 9 遍历 0 退出 请选择 0-9:1创建空队列成功!1 建空队 2 销毁 3 清空 4 判空 5 求长 6 取队头 7 入队 8 出队 9 遍历 0 退出 请选择 0-9:7请输入要入队的元素:1元素成功入队!1 建空队 2 销毁 3 清空 4 判空 5 求长 6 取队头 7 入队 8 出队 9 遍历 0 退出 请选择 0-9:7请输入要入队的元素:2元素成功入队!1 建空队 2 销毁 3 清空 4 判空 5 求长 6 取队头 7 入队 8 出队 9 遍历 0 退出 请

10、选择 0-9:7请输入要入队的元素:3元素成功入队!1 建空队 2 销毁 3 清空 4 判空 5 求长 6 取队头 7 入队 8 出队 9 遍历 0 退出 请选择 0-9:7请输入要入队的元素:4元素成功入队!1 建空队 2 销毁 3 清空 4 判空 5 求长 6 取队头 7 入队 8 出队 9 遍历 0 退出 请选择 0-9:91 2 3 41 建空队 2 销毁 3 清空 4 判空 5 求长 6 取队头 7 入队 8 出队 9 遍历 0 退出 请选择 0-9:8元素出队成功!出队元素为 11 建空队 2 销毁 3 清空 4 判空 5 求长 6 取队头 7 入队 8 出队 9 遍历 0 退出

11、请选择 0-9:8元素出队成功!出队元素为 21 建空队 2 销毁 3 清空 4 判空 5 求长 6 取队头 7 入队 8 出队 9 遍历 0 退出 请选择 0-9:93 41 建空队 2 销毁 3 清空 4 判空 5 求长 6 取队头 7 入队 8 出队 9 遍历 0 退出 请选择 0-9:7请输入要入队的元素:5元素成功入队!1 建空队 2 销毁 3 清空 4 判空 5 求长 6 取队头 7 入队 8 出队 9 遍历 0 退出 请选择 0-9:7请输入要入队的元素:6元素成功入队!1 建空队 2 销毁 3 清空 4 判空 5 求长 6 取队头 7 入队 8 出队 9 遍历 0 退出 请选择

12、 0-9:93 4 5 61 建空队 2 销毁 3 清空 4 判空 5 求长 6 取队头 7 入队 8 出队 9 遍历 0 退出 请选择 0-9:75请输入要入队的元素:7元素成功入队!1 建空队 2 销毁 3 清空 4 判空 5 求长 6 取队头 7 入队 8 出队 9 遍历 0 退出 请选择 0-9:93 4 5 6 71 建空队 2 销毁 3 清空 4 判空 5 求长 6 取队头 7 入队 8 出队 9 遍历 0 退出 请选择 0-9:5队列长为:51 建空队 2 销毁 3 清空 4 判空 5 求长 6 取队头 7 入队 8 出队 9 遍历 0 退出 请选择 0-9:6队列头元素为:31 建空队 2 销毁 3 清空 4 判空 5 求长 6 取队头 7 入队 8 出队 9 遍历 0 退出 请选择 0-9:3队列已清空!1 建空队 2 销毁 3 清空 4 判空 5 求长 6 取队头 7 入队 8 出队 9 遍历 0 退出 请选择 0-9:2成功销毁队列!1 建空队 2 销毁 3 清空 4 判空 5 求长 6 取队头 7 入队 8 出队 9 遍历 0 退出 请选择 0-9:0

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报