队列类模板.doc

上传人:hw****26 文档编号:2308254 上传时间:2019-05-05 格式:DOC 页数:20 大小:241KB
下载 相关 举报
队列类模板.doc_第1页
第1页 / 共20页
队列类模板.doc_第2页
第2页 / 共20页
队列类模板.doc_第3页
第3页 / 共20页
队列类模板.doc_第4页
第4页 / 共20页
队列类模板.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

1、封 皮(按学校要求手工填写)成 绩 评 定 表学生姓名 崔丁昴 班级学号 1203060115专 业 通信工程 课程设计题目队列类模板的设计与实现评语组长签字:成绩日期 20 年 月 日课程设计任务书学 院 信息科学与工程 专 业 通信工程学生姓名 崔丁昴 班级学号 1203060115课程设计题目 队列类模板的设计与实现实践教学要求与任务进行队列类模板的设计并实现,队列采用循环队列实现,数据元素可以是 char, int, float 等多种数据类型,包括以下功能:(1) 实现初始化队列操作,建立一个空队列;(2) 实现清空队列操作; (3) 实现判断队列是否为空的操作;(4) 实现求队列长

2、度的操作; (5) 实现返回队首元素的操作;(6) 实现入队操作; (7) 实现出队操作;(8) 实现队列的遍历操作,输出队列的每个元素。(9) 将上述功能作为类的成员函数实现,编写主函数测试上述功能。工作计划与进度安排第 17 周:分析题目,查阅课题相关资料,进行类设计、算法设计;第 18 周:程序的设计、调试与实现;第 19 周:程序测试与分析,撰写课程设计报告,进行答辩验收。指导教师:201 年 月 日专业负责人:201 年 月 日学院教学副院长:201 年 月 日摘 要很多自然科学和工程技术中的问题的解决最终都归结到队列问题的处理,模板是处理问题很经典的方法,由它改进、变形得到的类模板

3、,是一种效率很高、较为常用的方法。本文采用 C+语言实现了对队列的各个操作,设计了队列类,采用 Visual C+ 6.0 的控制台工程和 MFC 工程分别实现了对队列的处理。关键词:队列;类模板;控制台工程;MFC 工程目 录1 需求分析 .12 算法基本原理 .13 类设计 .24 基于控制台的应用程序 .24.1 类的初始定义 .24.2 类的实现 .34.3 主函数设计 .54.4 基于控制台的应用程序测试 .65 基于 MFC 的应用程序 .85.1 基于 MFC 的应用程序设计 .85.1.1 MFC 程序界面设计 .85.1.2 MFC 程序代码设计 .95.2 基于 MFC 的

4、应用程序测试 .11结 论 .14参考文献 .1511. 需求分析1.应用类模板可以使类中的数据成员、成员函数的参数及成员函数的返回值能根据模板参数匹配情况取任意数据类型。这种类型既可以是 C+预定义的数据类型,也可以是用户自定义的数据类型。2.队列在程序设计中也经常出现。一个最典型的例子就是操作系统中的作业排队。在允许多道程序运行的计算机系统中,同时有几个作业运行。如果运行的结果都需要通过通道输出,那就要按请求输出的先后次序排队。每当通道传输完毕可以接受新的输出任务时,队头的作业先从队列中退出作输出操作。凡是申请输出的作业都从队尾进入队列。2. 算法基本原理1.初始化一个循环队列。和顺序栈相

5、类似,在队列的顺序存储结构中,除了用一组地址连续的存储单元依次存放从队列头到队列尾的元素之外,尚需附设两个指针 front 和 rear 分别指示队列头元素及队列尾元素的位置。2.实现清空队列操作。直接让类 Queue 中的 private 成员全部清零。从而实现队列的清空。3.实现判断队列是否为空的操作。如果该队列中成员 count 为零的话。便直接输出该队列为空。4.实现求队列长度的操作。直接输出当前情况下的成员 count 的值。 5. 实现返回队首元素的操作。由于存在 front 直接指向着对首。所以直接输出该队首元素即 qfront。6.实现入队操作。在 count+的情况下。让输入

6、的值赋于 qrear+。即实现了在队尾插入的功能。 7.实现出队操作。在 count-的情况下。让 qfront=qfront+1。即实现了在队首删除的功能。8.实现队列的遍历操作。输出队列的每个元素。利用 for 循环直接输出 q数组中所有的元素。23. 类设计1.对于基类 Queue 来讲。内部有私有成员和公有成员。私有成员包括了描述一个队列必须的对首(front) 、队尾(rear) 、即队总数(count) 。另外还有用于存放队列数据的一个数组 qlistMaxQSize。公有成员则包括了各个函数。Queue(void)为构造函数。QDelete()为实现队列的删除的函数。QInser

7、t()为实现队列的插入的函数。ClearQueue()为实现队列的清空的函数。QLength()为计算求出队列的长度的函数。QFront()为找到队列的队首元素的函数。QEmpty()为判断队列是否为空的函数。PrintQueue()输出队列的函数。2.对于模板类来讲。即 template。由于要求的是可以执行int、char、float 三种类型的数据。所以我们在主函数中定义了三个成员Queue s、Queue z、 Queue y。用于分别调用这三种类型进行操作处理。4.基于控制台的应用程序整个程序分为三个大部分。第一个部分即为对类 Queue 的定义。第二个部分则是对类 Queue 中的

8、各个成员函数进行定义。第三个部分即为主函数,主函数中分别定义了 int 型、float 型、char 型的队列类型用于程序的选择及处理。4.1 类的初始定义#include#include using namespace std;const int MaxQSize = 20;template /模板声明class Queue /类 Queue 的声明private:int count; int front; int rear; /类 Queue 私有成员声明T qlistMaxQSize;public:Queue(void); /构造函数void QDelete(); /实现队列的删除voi

9、d QInsert(); /实现队列的插入void ClearQueue(); /实现队列的清空void QLength(); /计算求出队列的长度void QFront(); /找到队列的队首元素3void QEmpty(); /判断队列是否为空void PrintQueue(); /输出这个队列;4.2 类的实现template Queue :Queue(void):front(0), rear(0), count(0) /初始化template void Queue :QDelete() /删除T temp;if (count = 0)coutvoid Queue :QInsert()

10、/插入char a; T item; if (count = MaxQSize)couta;if(a=Y|a=y)coutitem;count+;qlistrear = item; rear = (rear+1) % MaxQSize;else break;4template void Queue :QLength() /长度coutvoid Queue :QFront() /队首coutvoid Queue :ClearQueue() /清空count=0; front=0; rear=0; template void Queue :QEmpty() /判断if(count=0) coutv

11、oid Queue :PrintQueue() /输出int i;for(i=0;ii;5if(i=Y|i=y) return 0;else exit(1);4.3 主函数的设计#include#include using namespace std;const int MaxQSize = 20;void main()int c,d;Queue s; Queue z; Queue y;coutc;switch(c)case 1: while(1)coutd;switch(d)case 1:s.QInsert();IfContinue();break; case 2:s.QDelete();I

12、fContinue();break;case 3:s.QLength();IfContinue();break; case 4:s.QFront();IfContinue();break;case 5:s.ClearQueue();IfContinue();break; case 6:s.QEmpty();IfContinue();break;case 7:s.PrintQueue();IfContinue();break;default: break;break;case 2: while(1)coutd;switch(d)case 1:z.QInsert();IfContinue();break; case 2:z.QDelete();IfContinue();break;case 3:z.QLength();IfContinue();break; case 4:z.QFront();IfContinue();break;case 5:z.ClearQueue();IfContinue();break; case 6:z.QEmpty();IfContinue();break;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育教学资料库 > 精品笔记

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。