公园导游图c语言课程设计,公园导游图.doc

公园导游图

课 程 设 计 报 告

课程名称 数据结构

课题名称 公园导游图

专 业 计算机科学与技术

班 级 计算机070

学 号

姓 名

指导教师

2009年 10月 26日

湖南工程学院

课 程 设 计 任 务 书

课程名称 数据结构

课 题 公园导游图

专业班级 计算机070

学生姓名

学 号

指导老师 审 批

任务书下达日期 2009 年 10 月 8 日

任务完成日期 2009 年 11 月 8 日

1设计内容与设计要求

1.1设计内容

1.1.1 算术24游戏演示

由系统随机生成4张扑克牌,用户利用扑克牌的数字及运算符号“+”、“—”、“*”、“/”及括号“(”和“)”从键盘上输入一个计算表达式,系统运行后得出计算结果,如果结果等于24,则显示“Congratulation!”,否则显示“Incorrect!”

设计思路:从键盘输入中缀表达式,然后将中缀表达式转换为后缀表达式,利用后缀表达式求值。

1.1.2 迷宫探索

随机生成一个迷宫图,迷宫大小为N*N,N预定义为常数,修改N的值可以改变迷宫的大小。用白色表示可走的路,蓝色表示墙壁不可以通过。系统设计两种运行方式:一种是系统自动探索(用递归方法实现);另一种是由人工操作探索通路。

设计思路:程序首先要考虑迷宫的表示,这是一个二维关系图,所以可选择二维数组来存储。数组元素只有两种值0和1,分别代表通路和墙壁。图形的显示可以根据数组元素的值来确定。如果是人工探索,则依据按键来确定探索物的位置坐标,利用循环语句实现。如果是系统自动探索,可采用递归算法实现。

1.1.3 二叉树遍历演示

演示遍历二叉树的过程,所以首先建立二叉树,并用图形显示出树的形状。建立的过程是采用前序便利的方法来创建,设计两种生成树的方式:一种是系统随机生成,另一种是人工输入。考虑到屏幕界面的有限性,限定二叉树不超过5层,最多26个字符,输入字符小数点“.”代表NULL。初始树为某种颜色的结点,三种情况的遍历采用填充另外一种醒目的颜色,来表示当前遍历的结点,同时显示该结点的访问序号。同时在遍历的过程中在遍历图形的下方显示出遍历序列。

1.1.4 数组应用

按照行优先顺序将用户随机输入的数据建成2维数组并以图形方式逐步显示出来,然后再按照列优先顺序以图形方式逐步输出相应数组。

1.1.5 拓扑排序演示

演示拓扑排序的过程。按照有向图给出的次序关系,将图中顶点排成一个线性序列,对于有向图中没有限定次序关系的顶点,则可以人为加上任意的次序关系。要求每输出一个顶点后就演示从图中删去此顶点以及所有以它为尾的弧。

1.1.6 图的遍历

演示图的深度优先, 广度优先遍历过程,并输出原图结构及遍历结果。要求图的结点数不能少于6个。可以由系统随机生成图,也可以由用户手动输入图。报告中要写出画图的思路;画出图的结构,有兴趣的同学可以进一步改进图的效果。

1.1.7 八皇后问题演示

在8*8的棋盘上摆放8个皇后,使他们不在同一条对角线上和不在一行和列上。 ?解决8皇后时,在安放第i行皇后时,需要在列的方向从1到n试探(j =1,…, n):首先在第j列安放一个皇后,如果在列、主对角线、次对角线方向有其它皇后,则出现攻击,撤消在第j列安放的皇后。如果没有出现攻击,在第j列安放的皇后不动,递归安放第i+1行皇后。 该课题要求求解可能的方案及方案数并逐步演示摆放皇后的过程。

1.1.8 双链表创建演示

建立一个递增有序的双链表。功能是随机生成8个结点数据,每生成一个结点则申请空间得到一个指针,将数据存放到指针所指的数据域中,然后将结点插入到已经排好序的双链表中。所以第一步工作是判断新结点的插入位置,第二不演示插入过程中指针的变化,第三步显示插入后的链表结果。

1.1.9 公园导游图

给出一张某公园的导游图,游客通过终端询问可知:从某一景点到另一景点的最短路径。游客从公园大门进入,选一条最佳路线,使游客可以不重复地游览各景点,最后回到出口(出口就在入口旁边)。要求用图示展示最佳路径。

1.2 选题方案:

所选题目根据学号确定,学号模9加1,即(学号%9+1)。如你的学号为12,则所选题目号为:12%9+1=(题目4)。注意,所有的课题都要求用图形方式演示步骤和结果。有兴趣的同学可以自己针对数据结构课程中所讲算法来设计一个演示过程的算法,但

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值