数据结构课程设计报告(约瑟夫环,长整数加法,马踏棋盘)讲义.doc

数据结构课程设计报告(约瑟夫环,长整数加法,马踏棋盘)讲义.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
课 程 设 计 报 告 课程名称: 数据结构 学 院: 信息电子技术 专 业: 计算机科学与技术 学 号: 14109741021 学生姓名: 宫骜 指导教师: 马 慧 彬 2016 年 7 月 8 日 设计题目: joseph环 问题描述: 编号是1,2,……,n的n个人按照顺时针方向围坐一圈,每个人只有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个仍开始顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向的下一个人开始重新从1报数,如此下去,直到所有人全部出列为止。设计一个程序来求出出列顺序。 算法说明: 设计心得: 进行有规律的长循环存储查询数据时,利用循环单链表的特点,即表中最后一个节点的指针域指向头节点,整个链表形成一个环。可以从任意一节点出发找到表中其他节点。 该程序利用单项循环链表的特点,将数据逐个存储于单项循环链表中,并利用首尾相连的特点,寻找数据,输出,删除,以达到目的。 其中,在存储数据时,可以直接将数据存储于第一个节点,之后以节点数查询,或者从第二个节点存储,但查找时要略过第一个空节点,之后以节点数减一查询。本程序选择第二种方法即从第二个节点存储数据,查询时忽略头节点。 参考文献: [1] 严蔚敏. 数据结构(C语言版). 北京: 清华大学出版社. 1997,4 测试用例与结果: 指导教师评语: 设计题目: 长整数加法运算 问题描述: 设计一个实现任意长的整数进行加法运算的演示程序。基本要求:利用双向循环链表实现长整数的存储,每个结点含一个整形变量。任何整形变量的范围是 -(2^15 - 1)? (2^15 - 1)。输入和输出形式:按中国对于长整数的表示习惯,每四位一组,组间用逗号隔开。 算法说明: 1.从用户处以字符型依次得到加数与被加数; 2.初始化链表; 3.利用循环读入加数,循环内容:利用判断(条件:字符是否为逗号,分号),为逗号时,链表新建节点,将数据以一位存入链表新节点,继续读入循环。为分号时,跳出读入循环; 4.同理,利用第三步循环读入被加数; 5.将两链表构成双向循环链表La,Lb; 6.创建新链表,新节点,利用循环,循环内容:进行相加:将两链表最后一个数据相加,利用判断(条件:相加结果是否大于等于10),大于等于10时,将两数之和除10取余置新节点,并且将上一节点数据加一,相加结果小于10时直接存至新节点。当所有La,Lb两链表计算完毕时,跳出循环; 7.输出新链表,每四个数据为一部分用逗号分隔,即两长整数相加结果。 设计心得: 在每个结点中仅存十进制的1位,即不超过10的非负整数,整个链表表示为十进制。相加过程中不要破坏两个操作数链表。两操作数的头指针存于指针数组中是简化程序结构的一种方法。 双向链表可以随时从其中一个节点进行便利并且可以更加方便的访问某节点的前驱以及后继。 本程序将用户输入的每个字符均进行判断以进行逗号分隔和分号结束的判断,二期应注意新链表是否超出最高为,如果超出应申请新节点,不然会出现数据缺失现象。 参考文献: [1] 严蔚敏. 数据结构(C语言版). 北京: 清华大学出版社. 1997,4 测试用例与结果: 指导教师评语: 设计题目: 马踏棋盘 问题描述: 将马随机放在国际象棋的8*8棋盘Bord[8][8]的某个方格中,马按走棋规则进行移动。要求每个方格上只进入一次,走遍棋盘上全部64个方格。编制非递归程序,求出马的行走路线,并按求出的行走路线,将数字1,2,…,64依次填入1个88的方阵,输出之。 算法说明: 1.从用户处接收起始点坐标x,y; 2.定义二维数组以存放棋子路径数据,并进行初始化为0; 3.在二维数组中确定起始点位置; 4.定义数组以确定棋子每步能跳出的偏移位置; 5.进行循环,利用贪心算法(在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。进行优化,在选择下一跳的位置时,总是选择出口少的那个位置,这里出口少是指这个位置的下一跳位置个数少。这是一种局部调整最优的做法,如果优先选择出口多的子结点,那出口少的子结点就会越来越多,很可能出现‘死’结点,这样对下面的搜索纯粹是徒劳,这样会浪费很多无用的时间,反过来

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档