实验递归及队列.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文档。上传文档
查看更多
实验递归及队列.doc

实验报告五 递归及队列 班级: 2010251 姓名: 李鑫 学号: 专业: 信息安全 实验目的: 掌握递归的基本思想。 掌握链式队列及循环队列的基本操作算法。 应用队列先进先出的特点,解决一些实际问题。 实验内容: 1、 p(a-b,b)+1 当a=b p(a,b)= 其中a,b为正整数。 0 当ab 利用递归设计此函数。 #include iostream.h int p(int a,int b) { if (ab) { return 0; } return p(a-1,b)+1; } void main() { int a,b; cout请输入整数a和b:endl; cinab; coutp(a,b)=p(a,b)endl; }n+1 当m=0 a(m,n)= akm(m-1,1) 当m≠0n=0 akm(m-1,akm(m,n-1)) 其它情形 akm(1,2),akm(2,1)?#include iostream.h int akm(int m,int n) { if (m==0) { return n+1; } else if (m!=0n==0) { return akm(m-1,1); } else return akm(m-1,akm(m,n-1)); } void main() { coutakm(1,2)=akm(1,2)endl; coutakm(2,1)=akm(2,1)endl; } 粘贴测试数据及运行结果: 3、循环队列的实现(请采用模板类及模板函数实现) [实现提示] 同时可参见教材p96-p98页的ADT描述及算法实现及ppt)函数、类名称等可自定义,部分变量请加上学号后3位。也可自行对类中所定义的操作进行扩展。 所加载的库函数或常量定义及类的定义: #includeiostream.h #include stdlib.h template class T class DCirQueue { public: DCirQueue(int size=10);//构造 ~DCirQueue(){};//delete []queue;//析构 void EnQueue(T x);//入队 int Count();//获得元素个数 T DeQueue();//出队 void Print();//遍历输出 void Clear();//清空队列 int IsEmpty();//为空吗 T Getfront();//获得队头元素 private: T *queue;//队列数组 int front,rear;//指示头尾位置 int maxsize;//队列容量 };template class T DCirQueueT::DCirQueue(int size):front(0),rear(0),maxsize(size) { queue=new T[maxsize]; if (queue==NULL) throw 动态分配内存失败!; } 输入:要入队的元素x; 前置条件:队列未满 动作:把x插入队尾 输出:无 后置条件:队列中增加了一个元素 template class T void DCirQueueT::EnQueue(T x) { if ((rear+1)%maxsize==front) throw 队满!; rear=(rear+1)%maxsize; queue[rear]=x; } 输入:无 前置条件:无; 动作:求队列的元素个数,含表空返回个数为零的情况。 输出:返回队列的元素个数。 template class T int DCirQueueT::Count() { if (front==rear) return 0; return (rear+maxsize-front)%maxsize; } (4)出队操作算法 输入:无 前置条件:队列非空 动作:删除队头元素 输出:返回队头元素的值 后置条件:队列中删除了一个元素 template class T T DCirQueueT::DeQueue() { if (rear==front) { cout队列为空!endl; return 0; } else { front=(front+1)%maxsize; return queue[front]; } } 输入:

文档评论(0)

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

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

1亿VIP精品文档

相关文档