兰州理工大学数据结构课程设计.docVIP

  • 113
  • 0
  • 约1.38万字
  • 约 28页
  • 2018-02-13 发布于贵州
  • 举报
兰州理工大学数据结构课程设计

******************* 实践教学 ******************* 兰州理工大学 计算机与通信学院 2014年秋季学期 数据结构课程设计 题 目:猴子吃桃子问题;跳马问题; 通过单字符置换可以将一个 单词改为另一个单词 专业班级:12级信息与计算科学(2)班 姓 名: 学 号: 指导教师: 成 绩: 目 录 摘 要 1 一.猴子吃桃问题 2 1.采用类语言定义相关的数据类型 2 2.算法设计 2 3.调试分析 3 4.测试结果 4 5.源程序(带注释) 6 二.跳马问题 10 1.采用类语言定义相关的数据类型 10 2.算法设计 10 3.调试分析 11 4.测试结果 11 5.源程序(带注释) 13 三.通过单字符置换可以将一个单词改为另一个单词 16 1.采用类语言定义相关的数据类型 16 2.算法设计 16 3.调试分析 18 4.测试结果 18 5.源程序(带注释) 19 总 结 23 参考文献 24 致 谢 25 摘 要 本程序主要主要解决猴子吃桃问题,跳马问题,通过单字符置换可以将一个单词改为另一个单词。猴子吃桃问题是分别采用数组数据结构,链式数据结构以及递归方法根据猴子每天吃的桃子数来求解一群猴子摘的桃子数。跳马问题也称为骑士周游问题,是算法的设计中的经典问题。如果有这样一种走法,则称所走的这条线为马的周游路线。在8*8的方格棋盘中马的行走规则从棋盘的某一方格出发,开始在棋盘上周游,如果能不重复地走遍棋盘上的每一个方格,这样的一条周游路线在数学上被称为国际象棋棋盘上马的哈密尔顿链。通过单字符置换可以将一个单词改为另一个单词是假设存在一个5字母单词的字典,给出一个算法确定单词A是否可以通过一系列的单字符置换转换为单词B,并且如果可以的话,输出相应的单词序列。正如bleed通过序列bleed、blend、blond、blood转换为blood。这些程序主要功能是加深我们对算法与数据结构中存储,线性表和栈的理解。让我们对算法与数据结构有个更深刻的认识。 关键词: 猴子吃桃;跳马;字符转换;数据结构 一.猴子吃桃问题 有一群猴子摘了一堆桃子,他们每天都吃当前桃子的一半且再多吃一个,到了第10天就只余下一个桃子。用多种方法实现求出原来这群猴子共摘了多少个桃子。要求:1)采用数组数据结构实现上述求解;2)采用链式数据结构实现上述求解;3)采用递归实现上述求解。 1.采用类语言定义相关的数据类型 typedef struct Node{ int i; int k;//数据域 struct Node *next;//指针域 }Node,*PNode;//定义一个指针用于链表求解 2.算法设计 1.一维数组解决。 建立一个一维数组a[10]从第九天开始算起令a[9]=1利用for循环计算前八天猴子吃的桃子数目并同时将后一天吃的桃子数赋值到前一天。最后即可得出猴子一共吃的桃子数。 2.递归函数解决: 定义一个整形函数DiGui使用if函数控制是否调用函数本身。桃子数等与一这说明第九天吃了一个桃子函数便可以结束。如果桃子数不为一则一直调用函数本身知道调用结束。 3链式数据结构解决: 定义头指针p1,p2指针指向头结点。P2指针负责传值进行循环。利用for函数进行循环。并将后一天的之赋值给前一天。最后便可得到猴子吃的总的桃子数。 主函数控制各子函数的调用流程如图1-1所示 图1-1 主控制程序流程图 3.调试分析 a、调试中遇到的问题及对问题的解决方法; 根据第十天所剩桃子个数,采用倒推方法,递归的求出第九天,第八天,第七天….直到算出刚开始猴子拥有桃子的总数。 解决方法主要是用递归算法采用数组存储方法。 b、算法的时间复杂度和空间复杂度。 通过1、2、3数字键选择计算方法时间复杂度为O(n),空间复杂度为O(1) 4.测试结果 1)执行程序进入主菜单,如图1-1所示 图1-2 主菜单 输入1用数组方法求解,如图1-2所示 图1-3数组求解 输入2用链表求解,如图1-3所示 图1-4 链表求解 输入3用递归方法求解,如图1-4所示 图1-5递归求解 输入4退出程序,如图1-5所示 图1-6 退出界面 5.源程序(带注释) #includestdio.h #includestdlib.h typedef struct Node{ int i; int k;//数据

文档评论(0)

1亿VIP精品文档

相关文档