网站大量收购独家精品文档,联系QQ:2885784924

数据结构课程设计报告 题目一:迷宫问题 题目二:哈夫曼编码器 班级.doc

数据结构课程设计报告 题目一:迷宫问题 题目二:哈夫曼编码器 班级.doc

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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 (

文档评论(0)

zhuwenmeijiale + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:7065136142000003

1亿VIP精品文档

相关文档