数据结构课程设计报告模板

合集下载

数据结构课程设计实验报告完整版

数据结构课程设计实验报告完整版

数据结构课程设计实验报告完整版【正文】一、实验目的本实验主要目的是通过实践,掌握数据结构的基本概念、常见数据结构的实现方式以及在实际应用中的应用场景和效果。

二、实验背景数据结构是计算机科学与技术领域中的一个重要概念,是研究数据的组织方式、存储方式、访问方式以及操作等方面的方法论。

在计算机科学领域,数据结构是实现算法和解决问题的基础,因此对数据结构的理解和应用具有重要意义。

三、实验内容本次数据结构课程设计实验主要分为以下几个部分:1. 实验环境的准备:包括选择合适的开发平台、安装必要的软件和工具。

2. 实验数据的收集和处理:通过合适的方式收集实验所需的数据,并对数据进行处理和整理。

3. 数据结构的选择和实现:根据实验需求,选择合适的数据结构,并进行相应的数据结构实现。

4. 数据结构的测试和优化:对所实现的数据结构进行测试,包括性能测试和功能测试,并根据测试结果对数据结构进行优化和改进。

5. 实验报告的撰写:根据实验过程和结果,撰写完整的实验报告,包括实验目的、实验背景、实验内容、实验结果和结论等。

四、实验过程1. 实验环境的准备本实验选择了Visual Studio作为开发平台,安装了相应版本的Visual Studio,并根据官方指引进行了相应的配置和设置。

2. 实验数据的收集和处理本实验选取了一份包含学生信息的数据集,包括学生姓名、学号、性别、年龄等信息。

通过编写Python脚本,成功提取了所需信息,并对数据进行了清洗和整理。

3. 数据结构的选择和实现根据实验需求,我们选择了链表作为数据结构的实现方式。

链表是一种常见的动态数据结构,能够高效地插入和删除元素,适用于频繁插入和删除的场景。

在实现链表时,我们定义了一个节点结构,包含数据域和指针域。

通过指针的方式将节点连接起来,形成一个链式结构。

同时,我们还实现了相关的操作函数,包括插入、删除、查找等操作。

4. 数据结构的测试和优化在完成链表的实现后,我们对其进行了性能测试和功能测试。

数据结构课程设计报告(完整版)参考模板

数据结构课程设计报告(完整版)参考模板

第二题:电梯模拟1、需求分析:模拟某校九层教学楼的电梯系统。

该楼有一个自动电梯,能在每层停留。

九个楼层由下至上依次称为地下层、第一层、第二层、……第八层,其中第一层是大楼的进出层,即是电梯的“本垒层”,电梯“空闲”时,将来到该层候命。

乘客可随机地进出于任何层。

对每个人来说,他有一个能容忍的最长等待时间,一旦等候电梯时间过长,他将放弃。

模拟时钟从0开始,时间单位为0.1秒。

人和电梯的各种动作均要消耗一定的时间单位(简记为t),比如:有人进出时,电梯每隔40t测试一次,若无人进出,则关门;关门和开门各需要20t;每个人进出电梯均需要25t;如果电梯在某层静止时间超过300t,则驶回1层侯命。

而题目的最终要求输出时:按时序显示系统状态的变化过程,即发生的全部人和电梯的动作序列。

2、设计2.1设计思想:(1)数据结构设计本题中的电梯的变化,是一个动态变化的过程,要在动态过程中实现正常跳转,首先要确定各种跳转的状态,因而这里我使用枚举类型来表示电梯的各种状态的:enum {up,down,stop,home}State(home);同时初始化最初状态为电梯在本垒层。

而在电梯的运行过程中对于乘客来说,显然有一个进入电梯与出电梯的队列,因而在这里我是用的链表来实现这个过程的,同时用结构体来保存该乘客的信息:typedef struct passage{int now;//乘客当前所在的位置int dis;//乘客的目地地int wait;//最长的等待的时间int waitnow;//已经等待的时间struct passage *next;}Passage;虽然电梯中的状态是由枚举类型来实现的,但是在整个程序的运行过程中,我还是为电梯设置了一个结构体类型,以便保存更多的信息:typedef struct lift{int count_C;//计数电梯已到达的层数int count_A;//系统的总时间计数器记得必须初始化为0int flag_in[High];//九个楼层有无请求的标志哪个楼层如果有请求该标志置1int num;//等待队列中的人数记得要进行初始化为0int people;//电梯中人数int flag_out[High];}Lift;(2)算法设计顾名思义本程序在运行的过程中用到的算法便是—“电梯算法”,电梯算法借鉴了磁盘寻道C-LOOK算法,即电梯向一个方向运行,直到这个方向上没有服务为止。

数据结构课程设计报告模板

数据结构课程设计报告模板

数据结构课程设计报告模板篇一:数据结构课程设计报告模板课程设计说明书课程名称:数据结构与算法专业:计算机科学与技术班级: 103013姓名:徐粤玲学号:03成绩:完成日期:XX年1 月 12日任务书摘要本文的研究工作在于利用计算机模拟人脑进行下黑白棋,计算机下棋是人工智能领域中的一个研究热点,多年以来,随着计算机技术和人工智能技术的不断发展,计算机下棋的水平得到了长足的进步该程序的最终胜负是由棋盘上岗双方的棋子的个数来判断的,多的一方为胜,少的一方为负。

所以该程序主要运用的战术有削弱对手行动战术、四角优先战术、在游戏开局和中局时,程序采用削弱对手行动力战术,即尽量减少对手能够落子的位置;在游戏终局时则采用最大贪吃战术,即尽可能多的吃掉对手的棋子;而四角优先战术则是贯穿游戏的始终,棋盘的四角围稳定角,不会被对手吃掉,所以这里是兵家的必争之地,在阻止对手进角的同时,自己却又要努力的进角。

关键词:黑白棋编程设计s目录1.引言 ................................................ ................................................... .. (4)2.课题分析 ................................................ ................................................... (7)3.具体设计过程 ................................................ ....................................................8设计思路 ................................................ ...................................................8程序设计流程图 ................................................ (8)函数实现说明 ................................................ .. (12)4.程序运行结果 ................................................ ..................................................145.软件使用说明 ................................................ ..................................................186.结论 ................................................ ................................................... (21)参考文献 ................................................ ................................................... . (23)附录:源代码 ................................................................................................... .. 241.引言数据结构在计算机科学界至今没有标准的定义。

数据结构课程设计实验报告 完整版

数据结构课程设计实验报告 完整版

第一章链表的应用线性表是数据结构中最简单、最常用的一种线性结构,也是学习数据结构全部内容的基础,其掌握的好坏直接影响着后继课程的学习。

线性表的顺序存储结构,即顺序表的概念相对比较简单,因此,本章的主要任务是使用有关单链表的操作来实现通讯录信息系统的管理。

1.1设计要求本章的设计实验要求使用有关链表的操作来实现通讯录信息系统的管理。

为了验证算法,通讯录管理包括单通讯录链表的建立、通讯者的插入、通讯者的删除、通讯者的查询及通讯录表的输出等。

主控菜单的设计要求使用数字0—5来选择菜单项,其他输入则不起作用。

程序运行后,给出6个菜单项的内容和输入提示:1.通讯录链表的建立2. 通讯者结点的插入3. 通讯者结点的查询4. 通讯者结点的删除5. 通讯录链表的输出0. 退出管理系统请选择0—5:1.2设计分析1.2.1主控菜单函数设计分析1.实现循环和功能选择首先编写一个主控菜单驱动程序,输入0—5以进入相应选择项。

假设输入选择用变量sn存储,它作为menu_select函数的返回值给switch语句。

使用for循环实现重复选择,并在主函数main()中实现。

实际使用时,只有选择大于5或小于0的值,程序才能结束运行,这就要使用循环控制。

这里使用for循环语句实现菜单的循环选择,为了结束程序的运行,使用了“return”语句,也可以使用“exit(0);”语句。

2.得到sn的合理值如前所述,应该设计一个函数用来输出提示信息和处理输入,这个函数应该返回一个数值sn,以便供给switch语句使用。

假设函数名为menu_select,对于sn的输入值,在switch 中case语句对应数字1—5,对于不符合要求的输入,提示输入错误并要求重新输入。

将该函数与主函数合在一起,编译运行程序,即可检查并验证菜单选择是否正确。

1.2.2功能函数设计分析1.建立通讯录链表的设计这里实际上是要求建立一个带头结点的单链表。

建立单链表有两种方法,一种称之为头插法,另一种称为尾插法。

数据结构课程设计(5篇)

数据结构课程设计(5篇)

数据结构课程设计(5篇)第一篇:数据结构课程设计课程设计说明书设计名称:数据结构课程设计题目:设计五:二叉树的相关操作学生姓名:专业:计算机科学与技术班级:学号:指导教师:日期: 2012 年 3 月 5 日课程设计任务书计算机科学与技术专业年级班一、设计题目设计五二叉树的相关操作二、主要内容建立二叉树,并对树进行相关操作。

三、具体要求1)利用完全二叉树的性质建立一棵二叉树。

(层数不小于4层)2)统计树叶子结点的个数。

3)求二叉树的深度。

4)能够输出用前序,中序,后序对二叉树进行遍历的遍历序列。

四、进度安排依照教学计划,课程设计时间为:2周。

本设计要求按照软件工程的基本过程完成设计。

建议将时间分为三个阶段:第一阶段,根据题目要求,确定系统的总体设计方案:即系统包括哪些功能模块,每个模块的实现算法,并画出相应的流程图.同时编写相应的设计文档;第二阶段,根据流程图编写程序代码并调试,再将调试通过的各个子模块进行集成调试;第三阶段,归纳文档资料,按要求填写在《课程设计说明书》上,并参加答辩。

三个阶段时间分配的大概比例是:35: 45: 20。

五、完成后应上交的材料本课程设计要求按照学校有关规范的要求完成,在课程设计完成后需要提交的成果和有关文档资料包括课程设计的说明书,课程设计有关源程序及可运行程序(含运行环境)。

其中课程设计说明书的格式按学校规范(见附件),其内容不能过于简单,必须包括的内容有:1、课程设计的基本思想,系统的总功能和各子模块的功能说明;2、课程设计有关算法的描述,并画出有关算法流程图;3、源程序中核心代码的说明。

4、本课程设计的个人总结,主要包括以下内容:(1)课程设计中遇到的主要问题和解决方法;(2)你的创新和得意之处;(3)设计中存在的不足及改进的设想;(4)本次课程设计的感想和心得体会。

5、源代码要求在关键的位置有注释,增加程序的可读性。

程序结构和变量等命名必须符合有关软件开发的技术规范(参见有关文献)。

数据结构课程设计报告模板

数据结构课程设计报告模板

课程设计报告
课程设计名称:数据结构
系:计算机科学系
学生姓名:
班级:
学号:
成绩:
指导教师:
开课时间:学年学期
一.设计题目
二.主要内容
(所选课题的需求分析,实现功能等)
三.课题设计的基本思想,原理和算法描述
(包括课题所用数据结构,界面设计、输入/输出设计,功能模块设计,符号说明等)
四.源程序及注释
五、运行示例及结果分析
(截图分析)
六、调试和运行程序过程中产生的问题及采取的措施
七、总结和展望
(400字以上)
八、参考资料
(格式为:[序号]作者.书名.出版社,出版年份如:
[1] 李建学等著.数据结构课程设计案例精编.清华大学出版社,2007
[2] 唐宁九等主编.数据结构与算法(C++版)实验和课程设计教程. 清华大学出版社,2008)
注:以上所有正文内容(所给八个标题除外)均采用小四字体书写,且每段首行缩进,段落间距1.3倍行距。

数据结构课程设计-表达式求值【完整版】

数据结构课程设计-表达式求值【完整版】

XXXXXX大学《数据结构》课程设计报告班级:学号:姓名:指导老师:目录一算术表达式求值一、需求分析二、程序得主要功能三、程序运行平台四、数据结构五、算法及时间复杂度六、测试用例七、程序源代码二感想体会与总结算术表达式求值一、需求分析一个算术表达式就是由操作数(operand)、运算符(operator)与界限符(delimiter)组成得。

假设操作数就是正整数,运算符只含加减乘除等四种运算符,界限符有左右括号与表达式起始、结束符“#”,如:#(7+15)*(23—28/4)#。

引入表达式起始、结束符就是为了方便.编程利用“算符优先法”求算术表达式得值.二、程序得主要功能(1)从键盘读入一个合法得算术表达式,输出正确得结果。

(2)显示输入序列与栈得变化过程。

三、程序运行平台Visual C++6、0版本四、数据结构本程序得数据结构为栈。

(1)运算符栈部分:struct SqStack //定义栈{char *base; //栈底指针char *top; //栈顶指针intstacksize; //栈得长度};intInitStack (SqStack &s) //建立一个空栈S{if (!(s、base= (char *)malloc(50*sizeof(char))))exit(0);s、top=s、base;s、stacksize=50;return OK;}char GetTop(SqStack s,char &e) //运算符取栈顶元素{if (s、top==s、base) //栈为空得时候返回ERROR{ﻩ printf("运算符栈为空!\n");ﻩ return ERROR;}elsee=*(s、top-1); //栈不为空得时候用e做返回值,返回S得栈顶元素,并返回OK returnOK;}int Push(SqStack&s,char e) //运算符入栈{if (s、top—s、base >= s、stacksize)ﻩ{printf("运算符栈满!\n");ﻩs、base=(char*)realloc(s、base,(s、stacksize+5)*sizeof(char));//栈满得时候,追加5个存储空间if(!s、base)exit (OVERFLOW);s、top=s、base+s、stacksize;s、stacksize+=5;}ﻩ*(s、top)++=e;//把e入栈ﻩreturn OK;}int Pop(SqStack &s,char &e) //运算符出栈{if (s、top==s、base) //栈为空栈得时候,返回ERROR{printf("运算符栈为空!\n”);ﻩ return ERROR;}else{ﻩﻩe=*-—s、top;//栈不为空得时候用e做返回值,删除S得栈顶元素,并返回OK return OK;}}int StackTraverse(SqStack&s)//运算符栈得遍历{ﻩchar *t;ﻩt=s、base;ﻩif (s、top==s、base){ﻩ printf(”运算符栈为空!\n”); //栈为空栈得时候返回ERRORreturn ERROR;}while(t!=s、top){ﻩﻩprintf(" %c",*t); //栈不为空得时候依次取出栈内元素t++;ﻩ}return ERROR;}(2)数字栈部分:struct SqStackn//定义数栈{int *base; //栈底指针int*top; //栈顶指针int stacksize; //栈得长度};intInitStackn (SqStackn &s) //建立一个空栈S{s、base=(int*)malloc(50*sizeof(int));if(!s、base)exit(OVERFLOW);//存储分配失败s、top=s、base;s、stacksize=50;return OK;}int GetTopn(SqStackn s,int&e) //数栈取栈顶元素{if(s、top==s、base){printf("运算数栈为空!\n");//栈为空得时候返回ERRORﻩ return ERROR;}elseﻩe=*(s、top-1);//栈不为空得时候,用e作返回值,返回S得栈顶元素,并返回OKreturnOK;}int Pushn(SqStackn &s,int e) //数栈入栈{if(s、top—s、base>=s、stacksize){ﻩﻩprintf("运算数栈满!\n");//栈满得时候,追加5个存储空间ﻩs、base=(int*)realloc (s、base,(s、stacksize+5)*sizeof(int));if(!s、base) exit (OVERFLOW);ﻩs、top=s、base+s、stacksize;//插入元素e为新得栈顶元素s、stacksize+=5;}*(s、top)++=e; //栈顶指针变化returnOK;}int Popn(SqStackn &s,int &e)//数栈出栈{ﻩif (s、top==s、base){ﻩ printf("运算符栈为空!\n");//栈为空栈得视时候,返回ERRORﻩ return ERROR;ﻩ}else{ﻩﻩe=*—-s、top;//栈不空得时候,则删除S得栈顶元素,用e返回其值,并返回OK ﻩreturnOK;}}int StackTraversen(SqStackn &s)//数栈遍历{ﻩint*t;ﻩt=s、base ;ﻩif(s、top==s、base)ﻩ{printf("运算数栈为空!\n”);//栈为空栈得时候返回ERRORﻩ return ERROR;ﻩ}ﻩwhile(t!=s、top)ﻩ{printf(” %d”,*t); //栈不为空得时候依次输出t++;}return ERROR;}五、算法及时间复杂度1、算法:建立两个不同类型得空栈,先把一个‘#’压入运算符栈。

《数据结构》课程设计报告模板模

《数据结构》课程设计报告模板模

《数据结构》课程设计报告设计题目航班信息的查询与检索专业电子信息工程班级姓名学号完成日期2010-6-28目录1. 问题描述………………………………………………页码2. 系统设计………………………………………………页码3. 数据结构与算法描述…………………………………页码4. 测试结果与分析………………………………………页码5. 总结…………………………………………………页码6. 参考文献………………………………………………页码附录程序源代码…………………………………………页码航班信息的查询与检索1. 问题描述:这学期,我们在余先伦老师的带领下,大致学习了一下《数据结构》,实现了简单的数据结构算法。

现在,我们将完成简单的数据结构课程设计。

在数据结构的学习中我们知道,排序和查找是在数据结构中使用频率非常高。

为了能够快速有效地进行查询与检索,我们需要对记录按关键字进行排列。

选择《航班信息查询与检索》这个课题,主要是因为当今时代的需求。

随着科技与经济的发展,当今乘飞机的人越来越多,这时,快速的了解各类航班的班次、时间、价格及机型的信息将备受关注。

在我开发的这个《航班信息查询与检索》这个系统中,航班号将成为关键字,而且是具有结构特点的一类关键字。

通过关键字的键入,你将获得你所需要的航班的全部信息。

2. 系统设计2.1 设计目标:通过一定的数据结构,实现对信息的查询与检索并按要求输出。

试设计一个航空客运定票系统。

[基本要求]每条航线所涉及的信息有:终点站名、航班号、飞机号、飞机周日(星期几)、乘员定额、余票量、订定票的客户名单(包括姓名、订票量、舱位等级1,2或3)以及等候替补的客户名单(包括姓名、所需数量)。

系统能实现的操作和功能如下:1)查询航线:根据客户提出的终点站名输出如下信息:航班号、飞机号、星期几飞行,最近一天航班的日期和余票额;2)承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满员或余票少余订票额,则需重新询问客户要求。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

校园导游系统设计一、设计要求1.问题描述设计一个校园导游程序,为来访的客人提供信息查询服务。

2.需求分析(1)设计学校的校园平面图。

选取若干个有代表性的景点抽象成一个无向带权图(无向网),以图中顶点表示校内各景点,边上的权值表示两景点之间的距离。

(2)存放景点代号、名称、简介等信息供用户查询。

(3)为来访客人提供图中任意景点相关信息的查询。

(4)为来访客人提供图中任意景点之间的问路查询。

(5)可以为校园平面图增加或删除景点或边,修改边上的权值等。

二、概要设计为了实现以上功能,可以从3个方面着手设计。

1.主界面设计为了实现校园导游系统各功能的管理,首先设计一个含有多个菜单项的主控菜单子程序以链接系统的各项子功能,方便用户使用本系统。

本系统主控菜单运行界面如图7-10所示。

2.存储结构设计本系统采用图结构类型(mgraph)存储抽象校园图的信息。

其中:各景点间的邻接关系用图的邻接矩阵类型(adjmatrix)存储;景点(顶点)信息用结构数组(vexs)存储,其中每个数组元素是一个结构变量,包含景点编号、景点名称及景点介绍三个分量;图的顶点个数及边的个数由分量vexnum、arcnum表示,它们是整型数据。

此外,本系统还设置了三个全局变量:visited[ ] 数组用于存储顶点是否被访问标志;d[ ]数组用于存放边上的权值或存储查找路径顶点的编号;campus是一个图结构的全局变量。

3.系统功能设计本系统除了要完成图的初始化功能外还设置了8个子功能菜单。

图的初始化由函数initgraph( )实现。

依据读入的图的顶点个数和边的个数,分别初始化图结构中图的顶点向量数组和图的邻接矩阵。

8个子功能的设计描述如下。

(1)学校景点介绍学校景点介绍由函数browsecompus( )实现。

当用户选择该功能,系统即能输出学校全部景点的信息:包括景点编号、景点名称及景点简介。

(2)查看浏览路线查看浏览路线由函数shortestpath_dij( )实现。

该功能采用迪杰斯特拉(Dijkstra)算法实现。

当用户选择该功能,系统能根据用户输入的起始景点编号,求出从该景点到其它景点的最短路径线路及距离。

(3)查看两景点间最短路径C语言与数据结构课程设计查看两景点间最短路径由函数shortestpath_floyd( )实现。

该功能采用弗洛伊德(Floyd)算法实现。

当用户选择该功能,系统能根据用户输入的起始景点及目的地景点编号,查询任意两个景点之间的最短路径线路及距离。

(4)景点信息查询景点信息查询由函数seeabout( )实现。

该功能根据用户输入的景点编号输出该景点的相关信息。

例如,景点编号、名称等。

(5)更改图的信息更改图的信息功能由主调函数changegraph( )及若干个子函数完成,可以实现图的若干基本操作。

例如:增加新的景点、删除边、重建图等。

(6)查询景点间可行路径该功能是查询两景点间所有可行路径,由函数allpath( )和函数path( )实现,其中path( )函数是直接递归函数。

由于是无向网,如果网中的边数很多,任意两个景点间的所有路径也会有限多,但很多路径是无实际意义的(有近路,为什么去走远路呢?)。

所以,本算法在求得的两景点间所有可行路径中,限制只输出路径长度不超过8个景点的路线。

(7)打印邻接矩阵该功能即输出图的邻接矩阵的值,由函数printmatrix( )实现。

(8)退出即退出校园导游系统,由exit(0)函数实现。

三、模块设计1.校园抽象图设计以湖北第二师范学院光谷校区主要景点为例,抽象完成的无向网如图7-7所示。

全校共抽象出28个景点,39条道路。

各景点分别用图中的顶点表示,景点编号从0-27;39条道路分别用图中的边表示,边上的权值表示景点之间的模拟距离。

2第7章 图结构及其应用 3图7-7 抽象的二师院光谷校区无向带权图2.模块设计本程序包含3个模块:主程序模块、工作区模块和无向网操作模块。

调用关系如图7-8所示。

图7-8 模块调用示意图3.系统子程序及功能设计本系统共设置18个子程序,各子程序的函数名及功能说明如下。

(1)mgraph initgraph( ) // 图的初始化(2)int locatevex(mgraph c, int v) // 查找景点在图中的序号(3)void path(mgraph c, int m,int n,int k) // 打印序号为m,n 景点间的长度不超过8个景点的路径 (4)int allpath(mgraph c) // 打印两景点间的景点个数不超过8的所有路径。

调用(3) (5)void shortestpath_dij(mgraph c) // 用Dijkstra 算法,求一个景点到其他景点间的最短路径,并打印以下编号(6)-(12)是图的基本操作。

包括:重建图、更新信息、删除、增加结点和边等。

(6)int creatgragh(mgraph &c) // 建图。

以图的邻接矩阵存储图 (7)int newgraph(mgraph &c) // 更新图的部分信息。

返回值:1C语言与数据结构课程设计(8)int enarc(mgraph&c) // 增加一条边。

返回值:1(9)int envex(mgraph&c) // 增加一个结点。

返回值:1(10)int delvex(mgraph&c) // 删除图的一个顶点。

返回值:1(11)int delarc(mgraph&c) // 删除图的一条边。

返回值:1(12)void printmatrix(mgraph c) // 输出图的邻接矩阵(13)int changegraph(mgraph &c) // 图操作的主调函数。

返回值:1(14)void shortestpath_floyd(mgraph c) // 用Floyd算法求任意两景点间的最短路径,并输出(15)void seeabout(mgraph c) // 查询景点的信息(16)void browsecompus(mgraph c) // 显示所有景点信息(17)void mainwork( ) // 工作区函数。

操作区用户界面(18)void main( ) // 主函数。

设定界面的颜色和大小,调用工作区模块函数4.函数主要调用关系图校园导游系统18个子程序之间的主要调用关系如图7-9所示。

图中数字是各函数的编号。

图7-9 系统函数调用关系图四、详细设计1.数据类型定义(1)无向带权图(无向网)的定义typedef struct arcell //边的权值信息{int adj; //权值}arcell,adjmatrix[MaxV ertexNum][MaxV ertexNum]; //图的邻接矩阵类型4第7章图结构及其应用typedef struct vexsinfo //顶点信息{int position; //景点的编号char name[32]; //景点的名称char introduction[256]; //景点的介绍}vexsinfo;typedef struct mgraph //图结构信息{vexsinfo vexs[MaxV ertexNum]; //顶点向量(数组)adjmatrix arcs; //邻接矩阵int vexnum,arcnum; //分别指定顶点数和边数}mgraph;(2)全局变量定义int visited[35]; //用于标志顶点是否已经访问过int d[35]; //用于存放权值或存储路径顶点编号mgraph campus; //图变量(大学校园)2.系统主要子程序详细设计(1)主程序模块设计主函数。

设定用户操作界面的颜色和大小,调用工作区模块函数。

void main( ){system("color 1f"); //屏幕颜色设定system("mode con: cols=140 lines=130");mainwork( );}(2)用户工作区模块设计主要工作函数。

操作区用户界面设计。

void mainwork( ){int yourchoice;campus=initgraph( );printf("\n-----------------------------------------欢迎使用校园导游程序--------------------------------------------\n"); printf("\n 欢迎来到湖北第二师范学院! \n\n"); printf("\n 菜单选择\n\n"); printf(" 1. 学校景点介绍 2. 查看游览路线\n");5C语言与数据结构课程设计printf(" 3. 查询景点间最短路径 4. 景点信息查询\n"); printf(" 5. 更改图信息 6. 查询景点间可行路径\n"); printf(" 7. 打印邻接矩阵8. 退出\n"); printf("\n-------------------------------------------------------------------------------------------------------------------\n"); printf("请输入你的选择:");scanf("%d",&yourchoice);while(!(yourchoice==1||yourchoice==2||yourchoice==3||yourchoice==4||yourchoice==5||yourchoice==6 ||yourchoice==7||yourchoice==8)){printf ("输入选择不明确,请重新输入\n");scanf("%d", &yourchoice);}while(1){switch(yourchoice){case 1: system("cls"); browsecompus(campus); break;case 2: system("cls"); shortestpath_dij(campus); break;case 3: system("cls"); shortestpath_floyd(campus); break;case 4: system("cls"); seeabout(campus); break;case 5: system("cls"); changegraph(campus); break;case 6: system("cls"); allpath(campus); break;case 7: system("cls"); printmatrix(campus); break;case 8: system("cls"); exit(0); break;default: break;}printf("\n----------------------------------欢迎使用校园导游程序------------------------------------\n");printf("\n 欢迎来到湖北第二师范学院! \n\n");printf("\n 菜单选择\n\n");printf(" 1. 学校景点介绍 2. 查看游览路线\n");printf(" 3. 查询景点间最短路径 4. 景点信息查询\n");printf(" 5. 更改图信息 6. 查询景点间可行路径\n");printf(" 7. 打印邻接矩阵8. 退出\n");printf("\n----------------------------------------------------------------------------------------------------\n");printf("\n请输入你的选择:");scanf("%d", &yourchoice);}//endwhile(1)}//mainwork6第7章图结构及其应用(3)无向网操作主调模块设计int changegraph(mgraph &c){int yourchoice;printf("\n请问是要\n\n (1)再次建图(2)删除结点(3)删除边\n");printf("\n (4)增加结点(5)增加边(6)更新信息\n\n (7)打印邻接矩阵(8)返回? \n\n"); scanf("%d",&yourchoice); printf("\n\n");while(!(yourchoice==1||yourchoice==2||yourchoice==3||yourchoice==4||yourchoice==5||yourchoice==6 ||yourchoice==7||yourchoice==8)){printf("输入选择不明确,请重输\n");scanf("%d",&yourchoice);}while(1){switch(yourchoice){case 1: creatgragh(c); break; // 重建图,调用(6)case 2: delvex(c); break; // 删除顶点,调用(10)case 3: delarc(c); break; // 删除边,调用(11)case 4: envex(c); break; // 增加顶点,调用(9)case 5: enarc(c); break; // 增加边,调用(8)case 6: newgraph(c); break; // 更新图的信息,调用(7)case 7: printmatrix(c); break; // 输出邻接矩阵,调用(12)case 8: return 1; // 返回主菜单}printf("\n请问是要\n\n (1)再次建图(2)删除结点(3)删除边\n");printf("\n (4)增加结点(5)增加边(6)更新信息\n\n (7)打印邻接矩阵(8)返回? \n\n");scanf("%d",&yourchoice); printf("\n\n");while(!(yourchoice==1||yourchoice==2||yourchoice==3||yourchoice==4||yourchoice==5||yourchoice==6 ||yourchoice==7||yourchoice==8)){printf("输入选择不明确,请重输\n");scanf("%d",&yourchoice);}}//endwhile(1)return 1;}//changegraph7C语言与数据结构课程设计(4)求两景点间的所有路径int allpath(mgraph c){// 4. 求两景点间的所有路径//算法中将路径起始点编号m存入d[ 0]数组元素中,并将其顶点访问标志设置为1,即visited[m]=1 //然后调path( ) 函数求由m出发到景点n的所有路径。

相关文档
最新文档