《数据结构课程设计说明书猴子吃桃.doc》由会员分享,可在线阅读,更多相关《数据结构课程设计说明书猴子吃桃.doc(17页珍藏版)》请在三一办公上搜索。
1、摘 要本文的研究内容是运用数据结构语言编程来解决猴子吃桃问题,主要是运用数据逻辑结构,数据的存储结构和数据的操作。采用数组,链式存储结构和递归的算法进行求解。本文主要介绍了本课题的开发背景,所要完成的功能和开发的过程。重点说明了系统的设计思路、总体设计、各个功能模块的设计与实现方法。关键词:,数组、链、递归;C语言;数据结构目录1课题背景的介绍11.1 课题背景11.2 目的12需求分析22.1 数据需求分析22.2 功能需求分析23系统总体设计33.1 系统模块划分33.2 系统模块结构图34系统详细设计44.1 系统主界面设计44.2采用数组数据结构实现44.3采用链数据结构实现54.4采
2、用递归方法实现54.5退出程序65系统连编与运行146总 结14参考文献151课题背景的介绍1.1 课题背景随着网络技术的迅速发展,各种行业纷纷应用网络技术操作和管理。当然有很多生活中的问题也并不是那么好解决的,比方说,猴子吃桃子问题,一群猴子如何分一堆桃子,且这些桃子能吃几天等等,这就是我们研究这个课题的目的。在计算机迅速发展的今天,将计算机这一信息处理器应用于现实生活已是势必所然。采用计算机来解决实际问题是信息科学化和现代化的重要标志,它也给各大高校带来了明显的社会效益。主要体现在:极大地提高了学生和老师的工作效率,大大地减少了以往的资料室所存在的各种弊端。为了能够更好的来实现对此问题的解
3、决,搜集了大量的资料,从系统结构的组织,功能的实现,技术的要求以及可行性等多方面进行考虑,认为本课题是一个适应现今管理需求的程序设计,具有一定的实际开发价值和使用价值。1.2 目的本课题运用C语言进行开发,C语言能够简单的进行编译一些程序,来实现对一些问题的解决。它虽然比较简单的处理一些问题,但却有更高的效率。它能够被大多数用户所接受,因为它能够呈现出清晰的界面,是人们能够很好的理解。能在一些方面给人们更好的服务,成为人们的好帮手。经过这一个学期对数据结构的学习,我们都学到了不少东西,可能有些学的还不够理想,但无论如何这些知识都为我们的下一步学习打下了坚实的基础。做这么一个课程设计,一方面是为
4、了检查我们一个学期以来的学习成果,另一方面也是为了让我们进一步的掌握和运用它,同时也让我们认清自己的不足之处和薄弱环节,加以弥补和加强。2需求分析随着现代社会的不断进步和发展,而对于有些实际问题通过计算机解决的有关的信息随之增加。在这种情况下单靠人工来处理猴子和桃子的信息不但显得大不从心,而且极容易出错。因此,需要开发一个解决猴子和桃子问题的软件,该软件可以实现由计算机代替人工执行一系列复杂而繁琐的操作,使得操作人员可以轻松快捷的完成任务。2.1 数据需求分析本系统的主要数据是猴子吃桃子问题的实现。此问题包括:用数组数据结构的方法实现;用链数据结构的方法实现;用递归的方法实现等。2.2 功能需
5、求分析本系统主要实现对猴子吃桃子问题的解决,需要实现以下几个方面的功能:(1)添加数据信息:录入数据的信息。(2)数据的输出:输出数据(3)用数组数据结构的方法。(4)用链数据结构的方法。(5)用递归的方法。(6)退出程序。3系统总体设计3.1 系统模块划分本系统主要是用几种方法来实现猴子吃桃子的问题,几种方法分别是:用数组数据结构的方法实现;用链数据结构的方法实现;用递归的方法实现。整个系统分为以下几个模块。1、欢迎界面模块 本模块提供欢迎界面的信息输出模式。2、创建模块 本模块用于录入数据的信息。3、查询模块 本模块用于用不同的方法进行查找。4、退出 用于退出本系统。3.2 系统模块结构图
6、根据系统功能设计,对应的系统模块结构图如图1所示:猴子吃桃问题的实现用数组结构实现退出程序用递归方法实现用链数据结构实现图1 系统模块结构图4系统详细设计4.1 系统主界面设计统过对该系统设计的了解与讨论,同时也为了广大使用者的方便与快捷。我们最后设计了这样的一个界面。首先要让使用者明白怎样使用此系统。这就需要通过界面来给他们一个清晰而明白的空间。而我们设计的这个界面恰好符合了这一要求。通过调用界面函数来使使用者能够很方便的把问题解决。在初始化线性表后,在界面上输入3进入插入模块,选择你要进行的操作。4.2采用数组数据结构方法实现:4.3采用链数据结构的方法实现:4.4用递归的方法实现:在初始
7、化线性表后,在界面上进入插入模块,选择你要进行的操作。程序代码如下: #include #include#include #define NULL 0#define Day 9/*函数声明*void creat();void print();void array();int digui();void End();void display();void fanhui();void display() system(cls);printf(n * 猴子吃桃子的问题 *n);printf(n * 1,用数组数据结构的方法实现。 *n);printf(n * 2,用链数据结构的方法实现。 *n);pr
8、intf(n * 3,用递归的方法实现。 *n);printf(n * 4,退出程序。 *n);printf(n *n);printf(n 请输入您的选择(1,2,3,4):);/*数组*void array() int ADay+1;/定义数组 int i; ADay=1;/第十天的桃子数 for(i=Day;i=1;i-) Ai-1=(Ai+1)*2; /*第一天的桃子数是第2天桃子数加1后的2倍*/ printf(the total of peaches are %dn,A0); printf(桃子变化为:n); for(i=0;i0)s=(node*)malloc(sizeof(nod
9、e);/分配存属空间s-data=peaches;/用来存放结点数据p-next=s; /把结点插入链表中p=s;peaches=(peaches+1)*2;/第一天的桃子数是第二天桃子数加后的2倍;day-;p-next=NULL;p=head;head=head-next;/使头指针指向头结点free(p); /释放指针Pvoid print()/输出从这十天每天的桃子数 node *p;p=head;int day=10;printf(请确定您输入天数:);scanf(%d,&day);while(p&day0) printf(第%d天的桃子数:%d个n,day,p-data);p=p-
10、next;day-;/*递归算法*int sum_fan(int n,int i) /子函数sum_fun,参数n和i接受主函数的参数 x和day if (i0) n = sum_fan(n+1)*2,-i); /每一次都用(n+1)*2)的值去调用子函数本身 return n; /返回结果int digui() int sum;int dayy; int day=9 ; /实现函数调用的次数printf(输入天数:);scanf(%d,&dayy);day=dayy-1; int x = 1; /最后一天还剩得一个桃子printf(输入第%d天还剩几个桃子:,dayy);scanf(%d,&
11、x); sum = sum_fan(x,day); /调用子函数sum_fan,并把返回得结果赋给sum printf(一共有桃子数%dn,sum); return 0; /*结束语*void End()printf(nnnn); printf( 1 谢谢使用 1n);printf( n 082501153n); printf( n 江淑华nnnn);/*主函数*void main() flg:display();int a;int b; scanf(%d,&a);if(a4) /system(cls); goto flg;else switch(a) case 1: system(cls);
12、 printf(n *使用数组的方法:*nnn); array(); printf(nnn*按键返回主菜单!按任意数字键退出程序!*n); scanf(%d,&b); if(b=0) goto flg; else system(cls); End(); break; case 2: system(cls); printf(n *使用链表的方法:*nnn); creat(); print(); printf(nnn*任意键返回主菜单!按0退出程序!*n); scanf(%d,&b); if(b=0) goto flg; else system(cls); End(); break; case 3
13、: system(cls); printf(n *使用递归的方法:*nnn); digui(); printf(nnn*任意键返回主菜单!按0退出程序!*n); scanf(%d,&b); if(b=0) goto flg; else system(cls); End(); break; case 4: system(cls); End(); exit(0); 过去的人工统计既浪费时间而且错误率很高,这不仅影响了工作人员的工作效率,而且还影响了整个学生工作的开展。比如具体的说:运用程序设计很快的解决了猴子吃桃子的问题,而且准确率也很高,通过此系统能够简单方便并且迅速的统计出来,在时间这方面已经
14、节约很多了,这也大大提高了人员的办事效率和质量。5系统连编与运行一个应用系统设计和创建完成后,还必须进行连编,以便生成一个可执行文件供最终用户使用。连编完成后还要运行,以检查整个系统的完整性和准确性,同时还可增加程序代码的保密性。6总 结本程序开发的解决猴子吃桃子问题的软件,从最后的测试结果来看,基本上实现了解决问题的几种方法:数组数据结构的方法;链数据结构的方法;递归的方法等等。并达到操作过程中的直观、方便、实用、安全等要求。系统采用模块化程序设计的方法,既便于系统功能的组合和修改,又便于未参与系统开发的技术维护人员补充和维护。本系统经过测试,证明其运行是稳定、可靠的。在这次课程设计的过程中
15、,我体会到要想开发一个系统软件,不仅需要相当的专业知识,还要有严谨缜密的思维能力。只有思想上清晰了,编程才有意义。同时还要善于捕获细小的方面,因为那往往是这个程序的致命因素。这次课程设计培养了我的细心和耐性,更树立了一种科学态度。但在系统设计中也也遇到很多的问题,并且本系统的功能还需要不断的完善和改进,在以后空闲时间里逐一进行完善,使系统功能更加完善,使本软件能够更好的为大中型企业服务,创造更大的社会价值。在这次设计过程中,我得到了赵一丁老师的精心指导,在此,我由衷地感谢赵老师!参考文献1 黄刘生.数据结构.北京:经济科学出版社,2005 2 黄杨铭.数据结构.北京:科学出版社,2001 3 严蔚敏. 数据结构(C语言版) M. 北京:清华大学出版社. 2008.4 苏光奎.数据结构导学.北京:清华大学出版社,20025 李春葆.数据结构教程(C语言版).北京:人民大学出版社,2009