课程设计-猴子吃桃.doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
课程设计-猴子吃桃

湖 南 工 学 院 数据结构课程设计 题 目: 数据结构实现—猴子吃桃 系 别: 专 业: 年 级: 班 级: 学 生: 学 号: 目 录 论 文 提 要 ……………………………………… 3 需 求 分 析 ……………………………………… 4 详 细 设 计 ……………………………………… 5 数组结构 …………………………………………… 5 递归 …………………………………………………… 7 链表 …………………………………………………… 9 调 试 结 果 ……………………………………… 11 调试分析 ……………………………………… 12 论 文 提 要 初步分析说明数据结构和抽象数类型等基本概念;从抽象数据类型的角度,通过数学应用的分析,把问题进行分析,整理,面后通过观察选择适当的逻辑结构、存储结构入及其相应的算法来解决问题,数据结构课程主要是为了培养我们对数据的抽象能力和对算法在时间和空间和复杂度上进行优化,猴子吃桃这一数学方面的例题是很典型的一道程序例题,在这里主要以C语言作为数据结构和描述语言,分析并采用数组数据结构,递归,链数据结构实现上述问题。 需 求 分 析 实现课题——猴子吃桃 摘 要:猴子吃桃这一典型的数学课题,其主要实现的过程是将其数学课题公式化,用一些简单的数据定义、初使化、通过一系列的条件判断和循环用来实现学数公式的计算机化。 通过C语言基础分析和数据结构初步了解,我们使用C语言,利用C和数据结构的结合使用,让我们在短时间内建立起对数据结构的进一步认识。然后,形成正确的对算法和优有个的理解观念。 关键词:C语言的基本了解,数据结构的基本了解, 数据中数组的使用,递归调用,用C语言实现数据链表 题目:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了,求第一天共摘了多少? 要求: 采用数组,递归,链数据结构实现上述求解 详 细 设 计 1. 数组结构 把猴子吃桃的天数倒过来看的话,以天数作为数组的下标i,剩下桃子的个数a[i]的递推公式为a[i]=(a[i-1]+1)*2。a[i]实际代表了倒数第i天剩下的桃子数。数组结构算法的流程图如图3-1: 程序如下: #includestdio.h void main() { int i,tao[10]; tao[9]=1;//tao[9]代表第10天剩的桃子数 for(i=8;i=0;i--){ tao[i]=2*(tao[i+1]+1); } printf(共摘了%d个桃子!\n,tao[0]); } 2.链结构 建立一个链表,根据每天桃子数与后一天桃子数的关系n=2*n+2,依次将每天的桃子数存进链表中,最后输出第一天的桃子数。首先是建立一个空链表,产生一个头结点,且将头结点的地址赋给L。然后把每天的桃子数从链表的第一个结点插入链表。最后第一天的桃子数被最后一个插入链表,成为链表中第一个值,将其赋给e,最后只要输出e即得到第一天的桃子数。 程序如下: #includestdio.h #includestdlib.h #define TRUE 1 #define FALSE 0 #define NULL 0 typedef int ElementType; typedef struct node { ElementType data; struct node *next; }StackNode,*LinkStack; void InitStack(LinkStack top) {top-next=NULL;} int IsEmpty(LinkStack top) { if(top-next==NULL) return TRUE; else return FALSE; } int Push(LinkStack top,ElementType element) { StackNode *temp; temp=(StackNode *)malloc(sizeof(StackNode)); if(!temp) return FALSE; else { temp-data=element; temp-next=top-next; top-next=temp; return TRUE;} } int Pop(LinkStack top,ElementType *element) {if(IsEmpty(top)) return FALSE; else { StackNode *temp

文档评论(0)

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

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

1亿VIP精品文档

相关文档