c报告类循环队列.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
c报告类循环队列

《面向对象程序设计》 实验报告 姓 名: XXXXXX 学 号: U200915194 班 级: 0 9 1 1 专 业:计算机科学与技术 报告日期:2011/01/05 一、实验题目 给出类的定义class QUEUE{ int *const queue; //用于存放队列元素 int front, rear; //队列的首指针front,尾指针rear const int size; //size为队列长度 public: virtual int operator(int e);//将元素e加入队列尾部 virtual int operator(int e);//从队列首部取出一个元素 virtual QUEUE operator=(const QUEUE q); QUEUE(int size); //size为队列长度 void display();//为方便于测试,添加此函数,用于显示队列元素 virtual ~QUEUE( ); }; 二、程序设计思路 由于类(队列)的数据成员包括对长度size,而且size定义为 const 类型,为方便处理,可以按照循环队列的方式来实现。①front和rear初始值定义为-1,每次插入元素时,先rear+1,再将元素插到队尾,则元素queue[i]下标取值范围为0~size-1;每次取出元素时,先front+1,再从队头取出元素。②但是容易发现,如果不做特殊处理,队列为空和队列为满的条件一样,都是front=rear。对于这个问题,可以这样解决,少用一个元素空间,约定以“队列头指针在队列为指针的下一位置上”作为队列“满”状态的标志。于是队列为空的条件是front=rear,而队列为满的条件是当front=0时rear=(size-1) ,或者 rear+1=front。 三、类的实现 /*构造函数,完成各数据成员的初始化。对于常量类型数据成员size和queue ,必须在构造函数之前完成初始化,而普通数据成员front和 rear ,可以在构造函数之前或构造函数内部初始化。*/ QUEUE::QUEUE(int size):front(-1),rear(-1),size(size),queue(new int[size]) { } /*将元素e加入队列尾部,插入成功则返回1,否则返回0。①插入元素前,要先判断队列是否已满,若满了,则直接返回0;否则,插入元素e,并返回1。②由于是循环队列,当rear增加到size时,就要从0开始。③虚函数定义时,不能带virtual关键字。*/ int QUEUE::operator(int e){ if(((rear==(size-1)) front=0) || (rear+1==front))//队列已满 return 0; else { rear++; if(rear==size) // rear增加到size时,就要从0开始 rear=0; queue[rear]=e; return 1; } } /*从队列首部取出一个元素,并有e带回。取出成功则返回1,否则返回0。①在取出元素之前,要判断队列是否为空,若为空,则直接返回0;否则,从队列首部取出元素赋给e,并返回1。②同样,当front增加到size时,就要从0开始。*/ int QUEUE::operator(int e) { if(front==rear) //队列为空 return 0; else { front++; if(front==size) // front增加到size时,就要从0开始 front =0; e=queue[front]; return 1; } } /*深拷贝函数,将形参对象q赋给当前对象。①若q队列的长度(容量)小于当前队列的长度,则直接将头指针、尾指针、以及所有元素都复制过来。②否则,若q队列的实际长度小于当前队列的长度(容量),则只将所有元素复制过来。③若上2中情况都不是,则提示“不能复制”。*/ QUEUE QUEUE:

文档评论(0)

xjj2017 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档