- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构课程设计报告 题目一:迷宫问题 题目二:哈夫曼编码器 班级
数据结构课程设计报告
题目一:迷宫问题
题目二:哈夫曼编码器
班级:06计升2班
姓名:
学号:
指导教师:
完成日期:2007年7月6日
题目一:迷宫问题
一、需求分析:
1、以二维数组Maze[m+2][n+2]表示迷宫,其中:Maze[0][j]和Maze[m+1][j](0≤j≤n+1)及Maze[i][0]和Maze[i][n+1](0≤i≤m+1)为添加的一圈障碍。数组中以元素值为0表示通路,1表示障碍。限定迷宫的大小,m,n≤10。
2、设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。迷宫的入口位置和出口位置可由用户随时设定。
3、程序输入:在主程序中定义存储迷宫数据的二维数组,入口点、出口点和迷宫中任一点的方向均可由用户自行设定。
4、程序输出:程序将输出迷宫中一条成功路径上的每一个点的坐标。
5、本程序只求出一条成功的通路。然而,只需要对迷宫求解的函数作小量修改,便可求得全部路径。
6、测试数据:当入口位置为(1,1),出口位置为(5,8),则输出的一条通路为:(1,1) ,(2,1),(2,2),(2,3)(2,4),(2,5),(3,5),(4,5),(5,5)(6,5),(6,6),(6,7),(6,8),(6,9);当输入的入口位置和出口位置之间不存在通路时,将会输出不存在通路的提示。
二、设计内容:
1、程序中所用到的数据及其数据类型的定义:
①设定栈的抽象数据类型定义为:
ADT Stack{
数据对象:D={ai|ai∈CharSet, i=1,2,…,n, n≥0}
数据关系:R1={ai-1,ai|ai-1,ai∈D,i=2,…,n}
基本操作:
InitStack(S)
操作结果:构造一个空栈S。
DestroyStack(S)
初始条件:栈S已存在。
操作结果:销毁栈S。
ClearStack(S)
初始条件:栈S已存在。
操作结果:将S清为空栈。
StackLength(S)
初始条件:栈S已存在。
操作结果:返回栈S的长度。
StackEmpty(S)
初始条件:栈S已存在。
操作结果:若S为空栈,则返回TRUE,否则返回FALSE。
GetTop(S,e)
初始条件:栈S已存在。
操作结果:若栈S不空,则以 e返回栈顶元素。
Push(S,e)
初始条件:栈S已存在。
操作结果:在栈S的栈顶插入新的栈顶元素e。
Pop(S,e)
初始条件:栈S已存在。
操作结果:删除S的栈顶元素,并以e返回其值。
StackTraverse(S,visit())
初始条件:栈S已存在。
操作结果:从栈底到栈顶依次对S中的每个元素调用函数visit()。
}ADT Stack
其中部分操作的算法:
/* 在栈中压入一元素x */
void push_seq( PSeqStack pastack, DataType x ) {
if( pastack-t = MAXNUM - 1 )
printf( Stack Overflow! \n );
else {
pastack-t++;
pastack-s[pastack-t] = x;
}
}
/* 删除栈顶元素 */
void pop_seq( PSeqStack pastack ) {
if (pastack-t == -1 )
printf( Underflow!\n );
else
pastack-t--;
}
②求迷宫路径的伪码算法:
void mazePath(int maze[][N], int direction[][2], int x1, int y1, int x2, int y2) {
int i, j, k, g, h;
PSeqStack st;
DataType element;
st = createEmptyStack_seq( );
maze[x1][y1] = 2; /* 从入口开始进入,作标记 */
pushtostack(st, x1, y1, -1); /* 入口点进栈 */
while ( !isEmptyStack_seq(st)) { /* 走不通时,一步步回退 */
element = top_seq(st);
pop_seq(st);
i = element.x; j = element.y;
for (
您可能关注的文档
最近下载
- (EC) No 13332008 on food additives_EUEC欧盟指令条例.pdf
- 1、调整99路-北京公共交通集团-线路查询.ppt
- 品牌视觉设计(张丙刚)PPT全套完整教学课件.pptx
- 电大行政管理实践报告.doc VIP
- 蒙德GF4 系列使用手册.PDF
- 租房合同范本下载(可直接打印).pdf
- 2025春数学人教版(2024)一年级下册欢乐购物街《小讲堂》教学设计.docx
- 欣赏音乐故事——小毛头与《卖报歌》.ppt
- (高清版)B-T 3836.2-2021 爆炸性环境 第2部分:由隔爆外壳“d”保护的设备.pdf VIP
- 2022级人工智能技术应用专业人才培养方案(三年制)-c.docx VIP
文档评论(0)