《程序设计综合实践》_第1章 线性结构-第2次课.pptxVIP

《程序设计综合实践》_第1章 线性结构-第2次课.pptx

  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文档。上传文档
查看更多

课前视频学习任务;课前视频学习任务;课前视频学习任务;;样例程序回顾;;课堂提问;课堂提问;课堂提问;课堂提问;11;课堂提问;课堂提问;课堂提问;15;课堂提问;C++标准模板库(STL)提供了类和队列的类模板。循环队列的入队列操作算法描述如下:

//将元素x入pQueue所指队列,成功返回1,失败返回0

boolEnQueue(structSeqQueue*pQueue,DataElemx)

{if((pQueue-iRear+1)%MaxSIZE==pQueue-iFront)

return0;//下一位置已是队首位置,队满

pQueue-iDatasA[pQueue-iRear]=x;//保存元素

pQueue-iRear=(pQueue-iRear+1)%MaxSIZE;//调整队尾位置

return1;

};课堂提问;;;习题6:又见约瑟夫环:有M个人围坐成一圈,编号依次从1开始递增直到M,现从编号为1的人开始报数,报到N的人出列,然后再从下一人开始重新报数,报到N的人出列;重复这一过程,直至所有人出列。所有出列的人再次按出列顺序围坐成一圈,并从第1人开始报数,这次为报到K的人出队列,然后再从下一人开始重新报数,报到K的人出列;重复这一过程,直至所有人出列。求最后出列次序。题目输入包括M、N、K三个正整数;N、K可能为1。题目要求按最后出队列顺序输出他们的编号,每个测试用例结果占一行,每个编号占4位。如样例输入1035;程序应该输出:

74161053289。;解题思路:体现模块化程序设计,用循环单链表代表人员组成的圈,也就是圆形队列,指针指向循环单链表尾部结点,设计实现Append函数,实现在循环单链表尾部添加代表指定元素的一个结点,返回新循环单链表的尾结点指针。

在主程序中先建立两个空循环单链表,先循环M次调用AppendTail建立初始圆形队列,在第5题基础上,再通过调用AppendTail函数将游戏过程中出圆形队列的人加入新圆形队列尾部,循环进行,直到原圆形队列为空;然后,对新圆形队列进行同样的操作,出圆形队列的人组建起新圆形队列;最后,调用显示函数,显示结果圆形队列中所有人员,销毁单链表即可实现。;习题7:好玩的约瑟夫环:有M个人,编号分别为1到M,玩约瑟夫环游戏,最初时按编号顺序排成队列;每遍游戏开始时,有一个正整数报数密码N,队列中人依次围坐成一圈,从队首的人开始报数,报到N的人出列,然后再从出列的下一人开始重新报数,报到N的人出列;重复这一过程,直至所有人出列,完成一遍游戏,所有出列的人形成新队列;游戏可能玩很多遍,每遍有新报数密码。求若干遍游戏完成后队列次序。题目输入包括若干个正整数(至少1个),第一个正整数为玩游戏人数M,后续每个正整数为每遍游戏报数密码,报数密码可能为1,题目要求按出队列顺序输出他们的编号。

样例输入:10352;

样例输出:46529137810。;解题思路:在第6题基础上,用循环单链表代表人员组成的圈,也就是圆形队列,指针指向循环单链表尾部结点,先建立一个非空的循环队列,每轮游戏时,从非空循环队列出队列的人员在出队列后组成一个新循环队列;循环进行,最后留下的非空循环队列就是结果队列;最后,调用显示函数,显示结果圆形队列中所有人员,销毁循环单链表即可实现。;习题8:无符号大数加、减运算。程序设计中经常遇到无符号大数加、减运算问题,请在样例程序Ex1.4基础上实现无符号大数减运算。题目要求输入两个无符号大数,保证一个大数不小于第二个大数,输出它们的和、差。

样例输入

1234567890987654321333888999666

147655765659657669789687967867

样例输出

1382223656647311991123576967533

1086912125327996651544201031799。;解题思路:在无符号大数相加样例基础上,实现两个无符号大数相减运算函数,类似两个无符号大数相加算法,设一个借位变量iCarry,初值为0,从两个双向链表尾部结点开始,两相应位、借位相减形成结果中新的高位,不够减时再向高位借位;从低位到高位,循环进行,直到减数处理完毕;如果被减数还有未处理位,同样需要考虑借位因素后,将结果位保留在结果数高位,最后,进行规整化处理形成最终结果双链表。在主函数里,通过调用相应函数实现功能即可。;习题9:有符号大数加、减运算。请在样例程序Ex1.4基础上实现无符号大数比较运算(小于

文档评论(0)

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

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

1亿VIP精品文档

相关文档