数据结构期末课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构C++课程设计报告
设计题目:1.为班级30个人的姓名设计一个哈希表,假设姓名用汉语拼音表示。要求用除留余法构造哈希函数,用线性探测再散列法处理冲突,平均查找长度的上限为2。
2.建立一棵用二叉链表方式存储的二叉树,并对其进行先序遍历,打印输出结果。
3.编程实现以邻接表或邻接矩阵为存储结构,图的广度和深度优先搜索.
专业计算机科学与技术
班级计科103
学号 201016021305
学生姓名唐云山
指导教师郑晓健
设计时间 2010-2011学年上学期
教师评分
2011年 6月 14 日
目录
实验一
实验目的————————————————————1 课程设计的组成部份———————————————1 课程设计进行过程及步骤—————————————4 所遇到的问题,你是怎样解决这些问题的——————4
体会收获及建议—————————————————4
参考资料(书、论文、网络资料)—————————4 教师评语————————————————————5 成绩—————————————————————5
实验二
实验目的————————————————————5 课程设计的组成部份———————————————5 课程设计进行过程及步骤—————————————7 所遇到的问题,你是怎样解决这些问题的——————7
体会收获及建议—————————————————7
参考资料(书、论文、网络资料)—————————8 教师评语————————————————————8 成绩—————————————————————8
实验三
实验目的————————————————————9 课程设计的组成部份———————————————9 课程设计进行过程及步骤—————————————15 所遇到的问题,你是怎样解决这些问题的——————16
体会收获及建议—————————————————16
参考资料(书、论文、网络资料)—————————16 教师评语————————————————————16 成绩—————————————————————16
实验一
1.概述
1.1目的
1.数据结构课程设计是在学完数据结构课程之后的实践教学环节。该实践教学是软件设计的综合训练,包括问题分析、总体结构设计、用户界面设计、程序设计基本技能和技巧。要求学生在设计中逐步提高程序设计能力,培养科学的软件工作方法。学生通过数据结构课程设计在下述各方面得到锻炼:
1.能根据实际问题的具体情况,结合数据结构课程中的基本理论和基本算
法,正确分析出数据的逻辑结构,合理地选择相应的存储结构,并能设计出解决问题的有效算法。
2.提高程序设计和调试能力。学生通过上机实习,验证自己设计的算法的
正确性。学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改。3.培养算法分析能力。分析所设计算法的时间复杂度和空间复杂度,进一
步提高程序设计水平。
1.2课程设计的组成部分
#include
#include
using namespace std;
#define M 47 //随机数
#define n 50 //哈希表长
#define q 30 //人数
struct name{
char *py;
int k;
};
name NameList[n];
struct hash{
char *py;
int k;
int si;
};
hash hashlist[n];
void listname()
{
char *f;
int s0,r,i;
NameList[0].py="baojie";
NameList[1].py="chengaoyang"; NameList[2].py="chenguangzhong"; NameList[3].py="chenliangliang"; NameList[4].py="chenyongzhou"; NameList[5].py="fengchao"; NameList[6].py="gexiangfeng"; NameList[7].py="huting"; NameList[8].py="huangpinjin"; NameList[9].py="jiangxiaojia"; NameList[10].py="laidongjie"; NameList[11].py="liyexiao"; NameList[12].py="lidaohui"; NameList[13].py="lijue";
NameList[14].py="lizhuoqun"; NameList[15].py="linfujun"; NameList[16].py="luobin"; NameList[17].py="luokeqing"; NameList[18].py="nichao"; NameList[19].py="panhuafeng"; NameList[20].py="sijun";
NameList[21].py="songzhanhui"; NameList[22].py="sunzhengqing"; NameList[23].py="wanghaofeng"; NameList[24].py="wangjunshuai";
NameList[25].py="wangqinde";
NameList[26].py="wangzejun";
NameList[27].py="wangkeke";
NameList[28].py="weixing";
NameList[29].py="wurenke";
for(i=0;i { s0=0; f=NameList[i].py; for(r=0;*(f+r)!='\0';r++) s0+=*(f+r); NameList[i].k=s0; } } void creathash() { int i; for(i=0;i { hashlist[i].py=""; hashlist[i].k=0; hashlist[i].si=0; } for(i=0;i { int sum=0; int adr=(NameList[i].k)%M; int d=adr; if(hashlist[adr].si==0) { hashlist[adr].k=NameList[i].k; hashlist[adr].py=NameList[i].py; hashlist[adr].si=1; } else { while(hashlist[d].k!=0) { d=(d+NameList[i].k%10+1)%M; sum=sum+1; } hashlist[d].k=NameList[i].k; hashlist[d].py=NameList[i].py; hashlist[d].si=sum+1; } } } void findlist() { string nam; int s0=0,r,sum=1; cout<<"请输入姓名的拼音:"< cin>>nam; for(r=0;r<20;r++) s0+=nam[r]; int adr=s0%M; int d=adr; if(hashlist[adr].k==s0) cout<<"姓名:"< else if(hashlist[adr].k==0) cout<<"无此记录!"< else { int g=0; while(g==0) { d=(d+s0%10+1)%M; sum=sum+1; if(hashlist[d].k==0) {cout<<"无此记录!"< g=1; } if(hashlist[d].k==s0) { cout<<"姓名:"< g=1; } } } } void display()