- 1、本文档共19页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
面向对象程序设计实验报告
PAGE - 18 -
课 程 实 验 报 告
课程名称:面向对象程序设计
实验名称:面向对象的整型队列编程
院 系 :计算机科学与技术
专业班级 : CS1305
学 号 : U201314933
姓 名 : 严铭
指导教师 : 马光志
2015 年 12 月 30 日
需求分析
题目要求
整型队列是一种先进后出的存储结构,对其进行的操作通常包括判断队列是否为空、向队列顶添加一个整型元素、出队列等。整型队列类型及其操作函数采用面向对象的C++语言定义,请将完成上述操作的所有函数采用C++编程, 然后写一个main函数对队列的所有操作函数进行测试。
class QUEUE{
int *const elems; //申请内存用于存放队列的元素
const int max; //队列能存放的最大元素个数
int head, tail; //队列头和尾,队列空时head=tail;初始时head=tail=0
public:
QUEUE(int m); //初始化队列:最多m个元素
QUEUE(const QUEUE s); //用队列s拷贝初始化队列
virtual operator int ( ) const; //返回队列的实际元素个数
virtual QUEUE operator(int e); //将e入队列,并返回队列
virtual QUEUE operator(int e); //出队列到e,并返回队列
virtual QUEUE operator=(const QUEUE s); //赋s给队列,并返回被赋值的队列
virtual void print( ) const; //打印队列
virtual ~QUEUE( ); //销毁队列
};
需求分析
这里主要完成队列的8个功能,和之前的实验只有一点出入,首先是队列的初始化,然后是对初始化后的队列赋值,然后求队列的实际长度,这里不需要求队列的最大长度,其实和之前赋值的一样,设队列的最大长度是MAXSIZE40,入队和出队与之前栈的出栈入栈相反,这里是先进先出,使用头尾两个变量成员来完成,然后是对已经赋值过的队列再进行赋值,这里重新赋完值的队列会覆盖之前的元素。然后是队列的销毁,即析构函数。
系统设计
概要设计
这里要完成的是队列的基本操作,用到了C++中的虚函数,但是和上次试验一样,没有太大的作用。如上图所示,要求完成8大基本功能,除了队列的初始化,还有赋值初始化,在主函数中没有写出来,因为我觉得第6个功能可以包括这一项,对初始化的队列进行赋值。在入队和出队功能设计上队列是先进先出和栈的先进后出刚好相反,这里需要设置两个指针,分别表示头指针和尾指针,基本所有操作靠这两个指针的变化完成,所有这两个指针很重要,首先还是初始化,这个和栈的初始化没有什么不同,用关键字new进行空间分配,设队列最多m个元素,在函数体外完成elems(new int [m]),max(elems == NULL?0:m) ,然后在函数体写头指针等于尾指针等于0,此时为空队列。然后赋值初始化,因为此时队列为空,没有元素,所以直接将s的元素拷贝到初始化队列中。然后求队列实际元素,使用头尾指针的关系式得出。入队和入栈没有太大区别,只是此时位置要用尾指针取长度的余数,否则赋值可能超出范围,elems[tail%MAXSIZE] = e;因为尾指针可以移动,最后将尾指针加1即可。出队和入队同理,由于是先进先出,所以直接是头指针出队,e=elems[head%MAXSIZE];然后对队列赋值,将队列s赋给队列,若有之前入队列的值,这些值将被覆盖。打印队列同样使用一个循环,输出队列的每一个元素,只是此时要注意队列的实际长度,而且第一个元素不一定是从0开始,因为head是移动的,而头指针可能在尾指针的后面,所以需要进行取模,和入队出队一样,那么循环元素从j=(head+i)%MAXSIZE开始,i的值从0开始增加(tail-head+MAXSIZE)%MAXSIZE;这是队列的实际长度的求法,最后将所有的元素打印出来即可。销毁队列即析构队列,之前使用new关键字,这里使用delete进行销毁。
详细设计
和之前栈的操作一样,这里给出一个例子直观的看到队列的特点先进先出:
队列还有一个重要的特点是如何判断队空和队满,这里给出一种方法,其实海投别的方法,比如设一个标志位,但这里这样使用最简单:
给出图如下:
解决了这三个最重要的问题,队
您可能关注的文档
- 轮胎PCR基础知识探究.ppt
- 密码学-常规加密体制探究.ppt
- 轮胎常见缺陷探究.ppt
- 轮胎的维护保养探究.pptx
- 轮胎汽压的标准探究.docx
- 轮系和减速器探究.ppt
- 轮椅的正确使用探究.ppt
- 血压测量技术-图解,直观,清晰,明了试题.ppt
- 密码学及安全应用4探究.ppt
- 饮料加工技术4试题.pptx
- 英语人教PEP版八年级(上册)Unit4+writing+写作.pptx
- 人美版美术四年级(上册)8 笔的世界 课件 (1).pptx
- 人美版美术七年级(上册)龙的制作.pptx
- 英语人教PEP版六年级(上册)Unit 2 第一课时.pptx
- 数学苏教版三年级(上册)3.3 长方形和正方形周长的计算 苏教版(共12张PPT).pptx
- 音乐人教版八年级(上册)青春舞曲 课件2.pptx
- 音乐人教版四年级(上册) 第一单元 音乐知识 附点四分音符|人教版.pptx
- 英语人教PEP版四年级(上册)Unit 6 Part B let's learn 1.pptx
- 道德与法治人教版二年级(上册)课件-3.11大家排好队部编版(共18张PPT).pptx
- 人美版美术七年级(上册)《黄山天下奇》课件1.pptx
文档评论(0)