- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构实验报告四—基于队列的操作来实现杨辉三角
杨辉三角显示
问题描述:
编写程序,根据输入的行数,屏幕显示杨辉三角。
一、需求分析:
1、行数不大于20行。
2、基于队列的操作来实现杨辉三角的不断生成过程。(注:不要用其它的公式计算的方法或者二维数组来实现)
3、基于数组实现队列的物理数据结构。
输入形式:输入一个整数n (行数不大于20)
输出形式:打印出来前(n+1)行的杨辉三角数列
功能实现:输出前20层的杨辉三角序列
样例输入输出形式:
输入:6
输出:
1 n=01 1 n=11 2 1 n=21 3 3 1 n=31 4 6 4 1 n=41 5 10 10 5 1 n=51 6 15 20 15 6 1 n=6
5、效率分析:O(n)
二、概要设计 :
抽象数据类型
void Queue::EnQueue(int item) //将元素item入列
{QueueValue[++iLast]=item; } //入列
int Queue::OutQueue() //第一个元素出列 返回此元素
{ return QueueValue[++iFront];}
算法的基本思想 :
下面为主要实现生成杨辉三角的算法:
Q.EnQueue(1); //第一行和第二行的生成
Q.EnQueue(1);
Q.EnQueue(1);
coutQ.OutQueue() n=0\n;
for(i=3;i=n+1;i++) //n行杨辉三角数的生成 与输出
{Q.EnQueue(1);
t1=Q.OutQueue();
for(j=2;ji;j++) //利用第n-1行的杨辉三角生成第n行的中间杨辉三角数
{ t 2=t1;
t1=Q.OutQueue(); //第n-1行第j个元素出列
Q.EnQueue(t1+t2); //第n行的第j个元素入列
coutt2 ; }
Q.EnQueue(1); //第n行最后一个元素为1
coutt1 n=i-2endl; } //输出第n-1行最后1个元素
Q.EnQueue(0); //以防队列为空
while(--i) //输出最后一行
coutQ.OutQueue() ;
cout n=nendl;
}
程序的流程
程序由三个模块组成:
输入模块:输入一个整数n
计算模块:栈和杨辉三角的算法
输出模块:在屏幕上打印出来前(n+1)行的杨辉三角数列
三、详细设计
算法的具体步骤:
算法思想已经在概要设计中提到了,现在通过基于队列基本操作的函数以及程序的模块化思想来实现杨辉三角的打印输出问题。
算法函数描述:实现杨辉三角的算法,代码在算法的基本思想中已经提出,
算法的时空分析:
由上可得该算法的时间复杂度O(n);
输入和输出的格式:
输入
请输入n: //输入一个数,这里输入6
回车
输出
在屏幕上现实n+1行杨辉三角数列
四、调试分析
在编写过程中出现了部分错误,但最后经过讨论和调试都得到了解决。
五、测试结果
六、用户使用说明(可选)
本程序的运行环境为windows 操作系统,执行文件为yanghui.exe 。
七、实验心得(可选)
此次实验没有通过什么公式,二维数组来实现杨辉三角,而是基于队列的操作来实现杨辉三角的不断生成过程。一方面了队列的应用与算法,而且也了解到了新的方法实现杨辉三角。在实验过程中遇到了部分问题,但通过与同学讨论得到了解决,挺有收获的,然需要再接再厉!
附录(实验代码):
#includeiostream
#includecstdlib
using namespace std;
const int MaxSize=200;
class Queue
{friend void YangHuiSanJiao(int n); //生成杨辉三角的函数
private:
int QueueValue[MaxSize]; //用一个数组实现队列
int iFront,iLast;
public:
Queue(){iFront=iLast=-1;}
您可能关注的文档
最近下载
- 3.5.3 手卫生管理(Word版本).docx VIP
- 25、沈园二首教案.doc VIP
- 现场应急处置—典型事故现场应急处置.pptx
- 招标代理服务质量保障策略与措施.docx VIP
- 《中国民间故事》整本书阅读交流展示课ppt课件(完美版)-小学语文五年级必读书目快乐读书吧.pptx VIP
- 新时代中国特色社会主义理论与实践课件-2024年高教版研究生新中特教材.pdf VIP
- 10KV高压开关柜故障分析及处理.docx VIP
- 新22J06 楼梯 参考图集.docx VIP
- 消防应急响应.docx VIP
- 《水运工程标准施工监理招标文件》(JTS110-10-2012).pdf VIP
文档评论(0)