数据结构课程设计报告.docx
- 文档编号:27197992
- 上传时间:2023-06-28
- 格式:DOCX
- 页数:50
- 大小:235.83KB
数据结构课程设计报告.docx
《数据结构课程设计报告.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计报告.docx(50页珍藏版)》请在冰豆网上搜索。
数据结构课程设计报告
课程设计报告
课程名称数据结构
课题名称1.迷宫求解2.一元多项式计算
专业计算机科学与技术
班级计算机1001
学号20100301012
姓名
指导教师
2012年7月5日
课程设计任务书
课程名称数据结构
课题1.迷宫求解2.一元多项式计算
课程设计任务书
一.设计内容
问题1:
拓扑排序
大学期间各专业都要制订相应的教学计划。
每个专业开设的课程预先已确定。
而各门课程间有的是相互独立的,而有的则有先修后修的限定。
试设计相应的课程设置程序,实现对某专业各学期的课程的排布,其中每门课需设定课时,而各学期的总课时不能超过上限。
测试数据:
学期课时上限数:
350;各课程所需学时:
48;课程先、后修关系如图:
问题2:
huffman编码
对于确定的字符集的电文字符串编码,实现最高的通信效率。
编程实现对于给定的输入串及各字符的已知频度,输出其编码方式(各字符的二进制编码)及对应的输出流。
测试数据:
字符
A
B
C
D
E
F
G
H
I
J
K
L
M
频度
186
64
13
22
32
103
21
15
47
57
1
2
32
字符
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
频度
20
57
63
15
1
48
51
80
23
8
18
1
16
问题3:
成绩管理
编制一应用软件实现对班级成绩管理。
基本功能有学生信息的增删(转入或退学)、查找(从当前点向前或向后双向的)、录入、统计(如总分,及格率等)。
建议用双链表实现。
问题4:
成绩排序
对某次考试成绩排序,输入为多门课程成绩,可以任一课程成绩为关键字进行检索。
建议采用快速排序等算法效率高的算法。
问题5:
迷宫求解
一个M*N的长方阵迷宫,0和1分别表示迷宫中的通路和墙壁,对任意设定的迷宫,东、南、西、北四个方向是可能的行走方向,求出一条从入口到出口的路径(或没有通路)。
迷宫的测试数据如下:
左上角(1,1)为入口,右下角(8,9)为出口。
0
0
1
0
0
0
1
0
0
0
1
0
0
0
1
0
0
0
0
0
1
1
0
1
0
1
1
1
0
0
1
0
0
0
0
1
0
0
0
0
0
1
0
0
0
1
0
1
0
1
1
1
1
0
0
1
1
1
0
0
0
1
0
1
1
1
0
0
0
0
0
0
问题6:
一元多项式计算
对于任意输入的多项式A=anxn+an-1xn-1+…a1x+a0和B=bmxm+bm-1xm-1+…b1x+b0,用链表存储后实现A+B;A-B。
测试数据:
a.
;
b.;
c.
;
d.
;
e.
;
问题7:
通讯录管理
设计一个通讯录管理,包括通讯录链表的建立、通讯者的插入、通讯者的删除、通讯者的查询以及信息修改等。
要求有运行界面,从菜单中进入选项。
二.设计要求
1.选题
每位学生需完成两个课题,其中一个必选,另一个自选,必选题次为,学号/7+1。
2.课程设计报告内容说明
1)需求分析程序的功能;输入输出的要求。
2)概要设计程序的模块构成以及模块之间的层次结构、各模块的调用关系;每个模块的功能;课题涉及的数据结构和数据库结构;即要存储什么数据,这些数据是什么样的结构,它们之间有什么关系等。
3)详细设计采用C语言定义相关的数据类型;写出各模块的类C码算法;画出各函数的调用关系图、主要函数的流程图。
4)调试分析以及设计体会测试数据:
准备典型的测试数据和测试方案,包括正确的输入及输出结果和含有错误的输入及输出结果;程序调试中遇到的问题以及解决问题的方法;课程设计过程经验教训、心得体会。
5)使用说明用户使用手册:
说明如何使用你编写的程序,详细列出每一步的操作步骤。
6)书写格式见附带说明。
7)附录参考书目;源程序清单(带注释)。
3.成绩评定
指导老师负责验收程序的运行结果,并结合学生的工作态度、实际动手能力、创新精神和设计报告等进行综合考评,并按优秀、良好、中等、及格和不及格五个等级给出每位同学的课程设计成绩。
具体考核标准包含以下几个部分:
①平时出勤(占10%)②系统需求分析、功能设计、数据结构设计及程序总体结构合理与否(占10%)③程序能否完整、准确地运行,个人能否独立、熟练地调试程序(占40%)④设计报告(占30%)注意:
不得抄袭他人的报告(或给他人抄袭),一旦发现,成绩为零分。
⑤独立完成情况(占10%)。
三.进度安排
第19周星期一13时:
00分——17时:
00分
星期二13时:
00分——17时:
00分
星期三13时:
00分——17时:
00分
星期四13时:
00分——17时:
00分
第20周星期一8时:
00分——12时:
00分
星期二8时:
00分——12时:
00分
附:
课程设计报告装订顺序:
封面、任务书、目录、正文、评分、附件(A4大小的图纸及程序清单)。
正文的格式:
一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。
正文的内容:
一、课题的主要功能;二、课题的功能模块的划分(要求画出模块图);三、主要功能的实现(至少要有一个主要模块的流程图);四、程序调试;五、总结;六、附件(所有程序的原代码,要求对程序写出必要的注释)。
正文总字数要求在5000字以上(不含程序原代码)。
一、迷宫求解系统.........................................................................................................................................1
1.1系统设计的意义与目的................................................................................................................1
1.2系统功能需求................................................................................................................................1
2.1系统功能分析................................................................................................................................2
2.2系统功能模块划分与设计............................................................................................................2
2.3系统功能模块图............................................................................................................................2
3.1定义栈的结构体...........................................................................................................................3
3.2栈构造函数算法...........................................................................................................................3
3.3入栈函数算法...............................................................................................................................3
3.4取栈顶元素函数算法...................................................................................................................4
3.5出栈函数算法...............................................................................................................................4
3.6输入迷宫矩阵函数算法...............................................................................................................4
3.7迷宫矩阵求解函数算法...............................................................................................................5
4.1调试过程中的错误......................................................................................................................7
4.2具体调试过程..............................................................................................................................7
二、一元多项式计..........................................................................................................................................11
1.1系统设计的意义与目的..............................................................................................................11
1.2系统功能需求..............................................................................................................................11
2.1系统功能分析..............................................................................................................................12
2.2系统功能模块划分与设计..........................................................................................................12
2.3系统功能模块图..........................................................................................................................12
3.1定义链表结点结构体.................................................................................................................13
3.2多项式计算结果输出函数算法.................................................................................................13
3.3需要处理的多项式输出函数算法.............................................................................................13
3.4插入结点函数算法.....................................................................................................................14
3.5多项式系数和指数输入函数算法.............................................................................................14
3.6结点删除函数算法.....................................................................................................................15
3.7多项式相加函数算法.................................................................................................................15
3.8多项式相减函数算法.................................................................................................................16
4.1调试过程中的错误....................................................................................................................18
4.2具体调试过程............................................................................................................................18
一、迷宫求解系统
1.系统需求分析
1.1系统设计的目的与意义
在对迷宫矩阵进行求解时,当矩阵规模比较庞大的时候,进行人工求解比较麻烦同时也容易出错,因此需要一个迷宫求解系统来对迷宫矩阵进行求解。
1.2系统功能需求
本系统定义了栈的结构体,栈的构造函数,入栈函数,出栈函数,取栈顶元素函数,迷宫矩阵的输入函数,迷宫矩阵求解函数以及一个主函数,通过主函数调用其他几个函数最终实现求得迷宫矩阵的通路径。
2.总体设计
2.1系统功能分析
系统通过调用函数来实现栈的构造,数据入栈,数据出栈,取得栈顶元素,输入迷宫矩阵,求解迷宫矩阵等功能。
InitStack()函数用来构造栈;Push()函数用来将数据入栈;Gettop()函数用来取栈顶元素;Pop()用来将栈顶元素出栈;Inpute()用来输入迷宫矩阵;MazePath()用来对迷宫矩阵进行求解;主函数main()用于调用这些函数。
2.2系统功能模块划分与设计
本系统定义了一个栈的结构体,定义了InitStack()、Push()、Gettop()、Pop()、Inpute()、MazePath()等函数来实现系统所需功能。
2.3系统功能模块图
图2.1系统功能模块
3.详细设计
3.1定义栈的结构体
该结构体定义了一个整型变量用来存放当前已分配的存储空间,数并定义了一个栈顶指针和一个栈低指针。
typedefstruct{//定义栈的结构体
int*base;
int*top;
intstacksize;
}SqStack;
3.2栈构造函数算法
StatusInitStack(SqStack&s){
//构造一个空栈s
s.base=(int*)malloc(STACK_INIT_SIZE*sizeof(int));
if(!
s.base)exit(OVERFLOW);//存储空间分配失败
s.top=s.base;
s.stacksize=STACK_INIT_SIZE;
returnOK;
}//InitStack
3.3入栈函数算法
StatusPush(SqStack&s,inte){
//插入元素e为新的栈顶元素
if(s.top-s.base>=s.stacksize){//栈满,追加存储空间
s.base=(int*)realloc(s.base,(s.stacksize+STACKINCREMENT)*
sizeof(int));
if(!
s.base)exit(OVERFLOW);//存储空间分配失败
s.top=s.base+s.stacksize;
s.stacksize+=STACKINCREMENT;
}
*s.top++=e;
returnOK;
}//Push
3.4取栈顶元素函数算法
StatusGettop(SqStacks,int&e){
//若栈不空,则用e返回栈顶元素,并返回OK;否则返回ERRORif(s.top==s.base)returnERROR;
e=*(s.top-1);
returnOK;
}//Gettop
3.5出栈函数算法
StatusPop(SqStack&s,ElamTypee){
//若栈不空,则删除s的栈顶元素,并返回OK;否则返回ERROR
if(s.top==s.base)returnERROR;
e=*--s.top;
returnOK;
}//Pop
3.6输入迷宫矩阵函数算法
Status**Inpute(ElamTypen,ElamTypem){
//输入迷宫矩阵函数
Status**p=(Status**)malloc(n*sizeof(int));//为矩阵分配存储空间
for(i=0;i *(p+i)=(Status*)malloc(m*sizeof(int)); for(i=0;i for(j=0;j scanf("%d",&p[i][j]);//按行输入迷宫矩阵的每个元素 returnp; }//Inpute 3.7迷宫矩阵求解函数算法 StatusMazePath(Status**p,ElamTypen,ElamTypem){ //迷宫矩阵求解函数 SqStacks1,s2; InitStack(s1);InitStack(s2); Push(s1,i);Push(s2,j); do{i=i+1;//判断当前元素下方的元素位置是否可通,可通则将该位置入栈 if(0<=i&&i p[i][j]){ if(i==n-1&&j==m-1){//判断当前元素是否为迷宫出口位置元素 Push(s1,i);Push(s2,j);break; } Push(s1,i);Push(s2,j);p[i][j]=2; } else{i=i-1;j=j+1; //判断当前元素右方的元素位置是否可通,可通则将该位置入栈 if(0<=i&&i p[i][j]){ if(i==n-1&&j==m-1){ Push(s1,i);Push(s2,j);break; } Push(s1,i);Push(s2,j);p[i][j]=2; } else{ j=j-2; //判断当前元素左方的元素位置是否可通,可通则将该位置入栈 if(0<=i&&i p[i][j]){ if(i==n-1&&j==m-1){ Push(s1,i);Push(s2,j);break; } Push(s1,i);Push(s2,j);p[i][j]=2; } else{i=i-1;j=j+1; //判断当前元素上方的元素位置是否可通,可通则将该位置入栈 if(0<=i&&i p[i][j]){ if(i==n-1&&j==m-1){ Push(s1,i);Push(s2,j);break; } Push(s1,i);Push(s2,j);p[i][j]=2; } else{//如果该元素的以上四个相邻元素位置都不通,则出栈 Gettop(s1,i);Gettop(s2,j); p[i][j]=1;Pop(s1);Pop(s2); Gettop(s1,i);Gettop(s2,j); } } } } if(i==0&&j==0){ printf("该迷宫矩阵无可通路径! \n"); c=1; break; } }while (1); if(i! =0&&j! =0) 输出该通路径 return0K; } 4.系统调试 4.1调试过程中的错误 、输入数据时,输错了数据的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 报告