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

《程序设计综合实践》_第1章 线性结构-第1次课.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文档。上传文档
查看更多

课前视频学习任务;;;课堂提问;课堂提问;课堂提问;课堂提问;课堂提问;;样例程序回顾;样例程序回顾;样例程序回顾;;习题1:编写程序,建立2个带头结点单链表,输入若干整数将正整数插入第1个单链表,将负整数插入第2个单链表,插入前和插入后单链表保持递增或相等次序,显示2个单链表,最后销毁。程序不可存在内存泄漏。

解题思路:要求体现模块化程序设计,采用样例中方法实现有序单链表的插入函数、显示函数和销毁函数,然后在主程序中调用相应函数,实现指定功能。;习题2:编写程序,在第1题基础上合并2个单链表,合并前后单链表保持递增或相等次序,显示合并前后单链表。注意不可存在内存泄漏。

解题思路:要求体现模块化程序设计,在第一题基础上,实现单链表合并函数。合并函数可采用两个指针分别指向两个单链表头结点后结点,结点中元素较小者添加在结果线性表尾部,指针向前移动一个结点,循环进行,直到一个单链表尾部,再把另一个单链表剩余结点代表的元素添加在新线性表尾部;(待续);(续)合并算法的时间复杂度应该可以达到O(m+n),其中m、n分别是两个线性表的长度。可以有两种方案:一是采用破环原两个合并前单链表,用原两个单链表中结点存储新线性表中元素,释放剩余的一个头结点;二是不破环原两个单链表,申请新结点存储新线性表中元素。在主程序中先调用相应函数,建立两个单链表,显示两个单链表,再调用合并函数合并两个单链表,显示合并后单链表,最后,销毁有关单链表。;习题3:在第1题建立2个单链表基础上,设计和实现就地逆置单链表函数,即利用原单链表结点建立元素次序相反的单链表。编写程序,建立2个单链表,就地逆置这2个单链表,显示逆置前后的各单链表。注意不可存在内存泄漏。

解题思路:要求体现模块化程序设计,第1题基础上,实现就地逆置单链表的函数,方法是先将原头结点后单链表截断,原头结点用于表示新单链表,再循环将截断后单链表中结点一个个插入在新单链表头部,算法时间复杂度可以达到O(n)。最后,在主程序中调用相应函数,实现指定功能。;习题4:编写程序,在前面建立1个带头结点单链表的基础上,设计一个实现单链表分离算法的Split函数,将原单链表中值为偶数的结点分离出来形成一个新单链表,新单链表中头结点重新申请,其余结点来自原链表,分离后,原链表中只剩非偶数值所在结点,最后显示2个单链表,在程序退出前销毁单链表。要求Split算法时间复杂性达到O(n),程序不可存在内存泄漏。;解题思路:要求体现模块化程序设计,第1题基础上,实现单链表分离算法的Split函数,方法是先建立表示空线性表的单链表,指定从原单链表头结点开始,判断指定结点的后继结点中元素是否为偶数,如果为偶数,将指定结点的后继结点从原链表删除,添加在新链表尾部;如果不是偶数,则指定结点改为原结点的后继结点,循环进行,直到指定结点是原链表中最后一个结点为止,算法时间复杂度可以达到O(n)。最后,在主程序中调用相应函数,实现指定功能。;习题5:约瑟夫环是个经典的问题。有M个人围坐成一圈,编号依次从1开始递增,现从编号为1的人开始报数,报到N的人出列,然后再从下一人开始重新报数,报到N的人出列;重复这一过程,直至所有人出列。求出列次序。本题要求用循环单链表实现。

;提示:开始时将循环单链表的指针变量设为空,设计实现尾部添加一人函数Append,添加第1人时,将结点的指针域指向自己,后面新添加人员时,在循环单链表指针变量所指尾部后添加新结点,并始终将循环单链表指针变量指向新添加结点,对应M个人的循环单链表中有M个结点;报数时,报到指定数后输出对应结点里的人员编号,并将该结点从链表中删除。题目输入包括M、N两个正整数,题目要求按出队列顺序输出他们的编号。如样例输入103;程序应该输出:

36927185104

;;

文档评论(0)

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

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

1亿VIP精品文档

相关文档