- 1、本文档共31页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构与算法说明书要点
数据结构与算法课程设计
题 目: 求素数问题
猴子吃桃问题
跳马问题
排序重构问题 。
目 录
目 录 2
摘 要 4
一.求素数问题 5
1.数据结构设计 5
2.算法设计 5
3.调试分析 6
4.测试结果 6
5.源程序(带注释) 6
二.构造可以使n个城市连接的最小生成树 8
1.数据结构设计 9
2.算法设计 9
3.调试分析 10
4.测试结果 11
5.源程序(带注释) 12
三.猴子吃桃问题 19
.数据结构设计 19
2.算法设计 19
3.调试分析 21
4.测试结果 21
5.源程序(带注释) 22
4.排序重构问题 24
1.数据结构设计 24
2.算法设计 24
3、流程图如下: 25
4、调试分析 25
5、测试结果 25
6、源程序(带注释) 26
总 结 30
参考文献 31
致 谢 31
摘 要
此报告是关于四个问题的设计:求素数问题、猴子吃桃子问题、跳马问题、哈夫曼的编/译码系统。
求素数问题。埃拉托色尼筛法(Sieve of Eratosthenes)是一种用来求所有小于N的素数的方法。从建立一个整数2~N的表着手,寻找i?的整数,编程实现此算法,并讨论运算时间。(1)
猴子吃桃子问题。有一群猴子摘了一堆桃子,他们每天都吃当前桃子的一半且再多吃一个,到了第10天就只余下一个桃子。用多种方法实现求出原来这群猴子共摘了多少个桃子。要求:1)采用数组数据结构实现上述求解;2)采用链式数据结构实现上述求解;3)采用递归实现上述求解。(2)
跳马问题。要求在64个国际象棋格子,任意位置放一个马,如何不重复地把格子走完。(3)
4.排序重构问题。令A为一个由N个已特殊排序数组成的数列:A1,A2,…,AN,其中A1=0。令B为N(N-1)/2个数(定义为Dij=Ai-Aj(ij))组成的数列。例如,A=0,1,5,8,那么D=1,3,4,5,7,8。请完成:
编写程序,根据A构造D;
编写程序,构造与D相对应的某一个数列A,注意A不是唯一的。。
1)编译的语言:C语言
2)编译环境:Visual C++ 6.0
关键词:递归,链表,栈和队列,猴子吃桃,跳马,排序重构
C语言 数据结构 顺序表 链表 数组
一.求素数问题
埃拉托色尼筛法(Sieve of Eratosthenes)是一种用来求所有小于N的素数的方法。从建立一个整数2~N的表着手,寻找i?的整数,编程实现此算法,并讨论运算时间。(1)
1.数据结构设计
定义一个线性表顺序存储结构,用来求所有小于N的素数
typedef int DataType;//数据类型
typedef struct{
DataType data[maxsize]; 定义一个一维数组
int length;//线性表中实际元素的个数
}Seqlist;
2.算法设计
用一个循环结构判断是否为素数,如果是素数则返回1,负责返回0。
int sushu(DataType i)
{
int m;
if(i==1)
return 0;//不是素数
for(m=2;mi;m++)
{
if(i%m==0)
return 0;//不是素数
}
return 1;//判断为素数,返回为1
}
3.调试分析
断一个数是否为素数的问题,例如数字I,求解其2-i-1 求余数,若为0,则不是素数,相反为素数。
时间复杂度的分析:算法的时间复杂度O(L.length-1)+O(m)。
4.测试结果
图1 数问题截图
程序运行结果如图所示,当输入素数5时,显示出1-5之间的素数2,3,5.
5.源程序(带注释)
#include stdio.h
#include math.h
#define maxsize 200
#define FALSE 0
typedef int DataType;
typedef struct{
DataType data[maxsize];
int length;
}Seqlist;//结点结构
int sushu(DataType i) {
int m;
if(i==1)
return 0;
for(m=2;mi;m++) {
if(i%m==0)
return 0;
}
return 1;
}
int m; int j;int i= 0; int k=0;
文档评论(0)