数据结构课程设计报告撰写要求

合集下载

数据结构课程设计要求

数据结构课程设计要求

一、数据结构课程设计要求1. 学生必须仔细阅读《数据结构》课程设计方案,认真主动完成课设的要求。

有问题及时主动通过各种方式与教师联系沟通。

2. 学生要发挥自主学习的能力,充分利用时间,安排好课设的时间计划,并在课设过程中不断检测自己的计划完成情况,二、数据结构课程设计题目1. 运动会分数统计(限 1 人完成)任务:参加运动会有n个学校,学校编号为 1 n。

比赛分成m个男子项目,和w个女子项目。

项目编号为男子 1 ............................ m,女子m+1••…m+w。

不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1 ,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。

(m<=20,n<=20 )功能要求:1)可以输入各个项目的前三名或前五名的成绩;2)能统计各学校总分,3)可以按学校编号或名称、学校总分、男女团体总分排序输出;4)可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。

5)数据存入文件并能随时查询6)规定:输入数据形式和范围:可以输入学校的名称,运动项目的名称输出形式:有中文提示,各学校分数为整形界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。

存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。

(数据文件的数据读写方法等相关内容在 c 语言程序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存储结构;测试数据:要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。

进行程序测试,以保证程序的稳定。

测试数据及测试结果请在上交的资料中写明;2. 飞机订票系统(限1 人完成)任务:通过此系统可以实现如下功能:录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;退票:可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。

数据结构的课程设计

数据结构的课程设计

数据结构的课程设计一、课程目标知识目标:1. 理解数据结构的基本概念,掌握线性表、树、图等常见数据结构的特点与应用场景。

2. 学会分析不同数据结构的存储方式和操作方法,并能运用到实际问题的解决中。

3. 掌握排序和查找算法的基本原理,了解其时间复杂度和空间复杂度。

技能目标:1. 能够运用所学数据结构知识,解决实际问题,提高编程能力。

2. 能够运用排序和查找算法,优化程序性能,提高解决问题的效率。

3. 能够运用数据结构知识,分析并解决复杂问题,培养逻辑思维能力和创新意识。

情感态度价值观目标:1. 培养学生对数据结构学科的兴趣,激发学习热情,形成主动探索和积极进取的学习态度。

2. 增强学生的团队协作意识,培养合作解决问题的能力,提高沟通表达能力。

3. 培养学生的抽象思维能力,使其认识到数据结构在计算机科学中的重要性,激发对计算机科学的热爱。

本课程针对高中年级学生,结合学科特点和教学要求,注重理论与实践相结合,培养学生的编程能力和逻辑思维能力。

通过本课程的学习,使学生能够掌握数据结构的基本知识,提高解决实际问题的能力,同时培养良好的学习态度和价值观。

在教学过程中,将目标分解为具体的学习成果,以便进行后续的教学设计和评估。

二、教学内容1. 数据结构基本概念:介绍数据结构的概念、作用和分类,重点讲解线性结构(线性表、栈、队列)和非线性结构(树、图)的特点。

2. 线性表:讲解线性表的顺序存储和链式存储结构,以及相关操作(插入、删除、查找等)。

3. 栈和队列:介绍栈和队列的应用场景、存储结构及相关操作。

4. 树和二叉树:讲解树的定义、性质、存储结构,二叉树的遍历算法及线索二叉树。

5. 图:介绍图的定义、存储结构(邻接矩阵和邻接表)、图的遍历算法(深度优先搜索和广度优先搜索)。

6. 排序算法:讲解常见排序算法(冒泡排序、选择排序、插入排序、快速排序等)的原理、实现及性能分析。

7. 查找算法:介绍线性查找、二分查找等查找算法的原理及实现。

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

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

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

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

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.建立通讯录链表的设计这里实际上是要求建立一个带头结点的单链表。

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

数据结构课程设计——报告(样例)

数据结构课程设计——报告(样例)

《数据结构与算法》课程设计报告王婧、龚丹、宋毅编写题目:航空订票管理系统学期:秋班号:学号:姓名:成绩:哈尔滨华德学院电子与信息工程学院年月一、实训设计的目的与要求(注:正文为宋体,五号字,为单倍行距)(一)课程设计目的(不少于字).数据结构课程设计是综合运用数据结构课程中学到的几种典型数据结构,以及程序设计语言(语言),自行实现一个较为完整的应用系统。

.通过课程设计,自己通过系统分析、系统设计、编程调试,写实验报告等环节,进一步掌握应用系统设计的方法和步骤,灵活运用并深刻理解典型数据结构在软件开发中的应用。

.学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力。

具体的有:()熟练掌握链表存储结构及其建立过程和常用操作;()熟练掌握队列的建立过程和常用操作;()学会自己调试程序的方法并掌握一定的技巧。

(二)题目要求(不少于字).每条航线所涉及的信息有:终点站名、航班号、飞机号、飞机周日(星期几)、乘员定额、余票量、订定票的客户名单(包括姓名、订票量、舱位等级,或)以及等候替补的客户名单(包括姓名和所需数量)。

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

若需要,可登记排队候补;()承办退票业务:根据客户提出的情况(日期、航班号),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其它排队候补的客户。

二、实训环境配置系统三、设计正文.需求分析。

数据结构课程设计实践报告

数据结构课程设计实践报告

数据结构实验报告实验名称:结构图提交文档学生姓名:提交文档学生学号:同组成员名单:指导教师姓名:结构图一、实验目的和要求1、设计目的1.掌握图的相关概念,包括图,有向图,无向图,完全图,子图,连通图,度,入度,出度,简单回路和环等定义。

2.重点掌握图的各种存储结构,包括邻接矩阵和邻接表等。

3.重点掌握图的基本运算,包括创建图,输出图,深度优先遍历,广度优先遍历等。

4.掌握图的其他运算,包括最小生成树,最短路径,拓扑排序和关键路径等算法。

5. 灵活运用图这种数据结构解决一些综合应用问题。

2、设计内容和要求1、编写一个程序algo8-1.cpp,实现不带权图和带权图的邻接矩阵与邻接表的相互转换算法、输出邻接矩阵与邻接表的算法,并在此基础上设计一个程序exp8-1.cpp实现如下功能:①建立如图1所示的有向图G的邻接矩阵,并输出;②由有向图G的邻接矩阵产生邻接表,并输出;③再由②的邻接表产生对应的邻接矩阵,并输出。

图12、编写一个程序algo8-2.cpp,实现图的遍历运算,并在此基础上设计一个程序exp8-2.cpp完成如下功能:①输出图1所示的有向图G从顶点0开始的深度优先遍历序列(递归算法);②输出图1所示的有向图G从顶点0开始的深度优先遍历序列(非递归算法);③输出图1所示的有向图G从顶点0开始的广度优先遍历序列。

3、设计一个程序exp8-3.cpp,采用邻接表存储图,并输出图8.1(a)中从指定顶点1出发的所有深度优先遍历序列。

二、运行环境(软、硬件环境)软件环境:Visual C++6.0运行平台: Win32硬件:普通个人pc机三、实验过程描述文件graph.h中定义了图的邻接矩阵表示类型和邻接表表示类型,该头文件在以下三个实验中都会使用到。

其代码如下:#ifndef GRAPH_H_INCLUDED#define GRAPH_H_INCLUDEDtypedef int InfoType;#define MAXV 100 //最大顶点个数#define INF 32767 //INF表示无限大//以下定义邻接矩阵类型typedef struct{int no;InfoType info;}VertexType;typedef struct{int edges[MAXV][MAXV];int n,e;VertexType vexs[MAXV];}MGraph;//以下定义邻接表类型typedef struct ANode{int adjvex;struct ANode* nextarc;InfoType info;}ArcNode;typedef int Vertex;typedef struct VNode{Vertex data;ArcNode* firstarc;}VNode;typedef VNode AdjList[MAXV];typedef struct{AdjList adjlist;int n,e;}ALGraph;#endif // GRAPH_H_INCLUDED实验①源程序。

数据结构课程设计

数据结构课程设计

《数据结构》课程设计实践指导书一、实践的目的和任务《数据结构》课程设计是计算机科学技术专业集中实践性环节之一,是学习完《数据结构》课程后进行的一次全面的综合练习。

开设本课程设计实践的主要目的就是要达到理论与实际应用相结合,提高学生的动手能力,完成计算机应用能力的培养;主要任务是通过对给定问题的求解,使学生在运用《数据结构》、程序设计以及其它所学课程中的各种基本技术和理论,在建立问题模型、构造求解算法、设计数据结构、编程及上机调试等方面得到全面的锻炼,从而能更深刻地理解《数据结构》的精髓,为后续软件课程的学习及软件设计能力的提高奠定良好的基础。

二、实践的内容和要求(一)实践内容实践内容为数据结构课程完成后,运用《数据结构》、程序设计以及其它所学课程中的知识和技术来解决实际的问题。

在解决实际应用性问题时,按照计算机解决问题的步骤进行以下几个方面的工作:采用简明、严格的问题描述,建立模型,设计求解方法,用计算机实现求解方法,最后进行测试和文档制作。

1、建立模型许多问题的最初描述既不精确又不简练,还有一些问题不可能简单而精确地用计算机可求解的形式来描述,即使有些可用计算机求解的问题,也需要在很大范围内确定问题的参数,而那些合理的参数值只有通过实验才能确定。

因此,要用计算机解决问题,必须首先要以简明、严格的方式将问题描述清楚。

数学或其它科学中的几乎所有分支都可作为某一类具体问题的抽象模型。

例如,在涉及到若干对象及其相互间关系的问题时所用的数学模型为图论;数值计算问题中常用的数学模型为线性方程组(用于求解电路的电流强度或结构中的应力)或微分方程(用于预报人口增长情况或化学反应速度等);在符号与文本处理问题时常用字符串及形式语法作为模型(如编译系统)。

《数据结构》课程中所介绍的各种结构均可作为一种模型。

2、构造算法对问题建立了适当的数学模型后,就可以依据这一模型求解。

最初的目标是给出一个算法形式的解法,这是设计的核心部分。

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

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

《数据结构》课程设计报告一、课程目标《数据结构》课程旨在帮助学生掌握计算机科学中数据结构的基本概念、原理及实现方法,培养其运用数据结构解决实际问题的能力。

本课程目标如下:1. 知识目标:(1)理解数据结构的基本概念,包括线性表、栈、队列、串、数组、树、图等;(2)掌握各类数据结构的存储表示和实现方法;(3)了解常见算法的时间复杂度和空间复杂度分析;(4)掌握排序和查找算法的基本原理和实现。

2. 技能目标:(1)能够运用所学数据结构解决实际问题,如实现字符串匹配、图的遍历等;(2)具备分析算法性能的能力,能够根据实际问题选择合适的算法和数据结构;(3)具备一定的编程能力,能够用编程语言实现各类数据结构和算法。

3. 情感态度价值观目标:(1)培养学生对计算机科学的兴趣,激发其探索精神;(2)培养学生团队合作意识,提高沟通与协作能力;(3)培养学生面对问题勇于挑战、善于分析、解决问题的能力;(4)引导学生认识到数据结构在计算机科学中的重要地位,激发其学习后续课程的兴趣。

本课程针对高年级学生,课程性质为专业核心课。

结合学生特点,课程目标注重理论与实践相结合,强调培养学生的实际操作能力和解决问题的能力。

在教学过程中,教师需关注学生的个体差异,因材施教,确保课程目标的达成。

通过本课程的学习,学生将具备扎实的数据结构基础,为后续相关课程学习和职业发展奠定基础。

二、教学内容根据课程目标,教学内容主要包括以下几部分:1. 数据结构基本概念:线性表、栈、队列、串、数组、树、图等;教学大纲:第1章 数据结构概述,第2章 线性表,第3章 栈和队列,第4章 串。

2. 数据结构的存储表示和实现方法:教学大纲:第5章 数组和广义表,第6章 树和二叉树,第7章 图。

3. 常见算法的时间复杂度和空间复杂度分析:教学大纲:第8章 算法分析基础。

4. 排序和查找算法:教学大纲:第9章 排序,第10章 查找。

教学内容安排和进度如下:1. 第1-4章,共计12课时,了解基本概念,学会使用线性表、栈、队列等解决简单问题;2. 第5-7章,共计18课时,学习数据结构的存储表示和实现方法,掌握树、图等复杂结构;3. 第8章,共计6课时,学习算法分析基础,能对常见算法进行时间复杂度和空间复杂度分析;4. 第9-10章,共计12课时,学习排序和查找算法,掌握各类算法的实现和应用。

《数据结构》课程设计文档格式

《数据结构》课程设计文档格式

课程设计报告的内容设计结束后要写出课程设计报告,以作为整个课程设计评分的书面依据和存档材料.设计报告以规定格式的电子文档书写,打印并装订,排版及图,表要清楚,工整.装订顺序如下:封面、目录、正文.正文包括以下7个内容:1.需求分析陈述说明程序设计的任务,强调的是程序要做什么,需要什么结果、所能达到的功能.2.概要设计说明本程序中用到的所有抽象数据类型的定义,主程序的流程以及各程序模块之间的层次(调用)关系.3.详细设计实现概要设计中定义的所有数据类型,对每个操作只需要写出伪码算法;对主程序和其他模块也都需要写出伪码算法(伪码算法达到的详细程度建议为:按照伪码算法可以在计算机键盘直接输入高级程序设计语言程序);可采用流程图、N S 图进行描述,画出函数和过程的调用关系图.4.调试分析内容包括:a.调试过程中遇到的问题是如何解决的以及对设计与实现的回顾讨论和分析;b.算法的时空分析(包括基本操作和其他算法的时间复杂度和空间复杂度的分析)和改进设想;c.经验和体会等.5.测试结果列出你的测试结果,包括输入和输出.这里的测试数据应该完整和严格,最好多于需求分析中所列.6.参考文献列出参考的相关资料和书籍.封面格式如下:数据结构课程设计报告班级:_____ _____ _____ _________ 姓名:__________ __________ 指导教师:_______ ____________ 成绩:__________________________信息工程学院年月日目录1.需求分析 (2)2.概要设计 (2)3.详细设计 (2)4.调试分析 (2)5.测试结果 (2)参考文献 (6)附录……………………………………………………一、需求分析二、概要设计三、详细设计四、调试分析五、测试结果六、参考文献七、附录附录为程序代码!。

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

数据结构课程设计报告撰写要求(一)纸张与页面设置1.采用国际标准A4型打印纸或复印纸,纵向打印。

2.页边距:上3.5cm、下2.5cm、左边距3.0cm,右边距2.5cm。

3.页眉2.5cm、页脚1.8cm、对称页边距。

(二)页眉“沈阳航空工业学院课程设计报告”,五号楷体,居中。

(三)页脚标页码,五号宋体,居中。

(四)题目、摘要、关键词题目:小二号黑体,居中。

(五)标题一级标题,三号粗宋体,居中,用“1 ”、“2 ”、“3 ”…等表示序号。

二级标题,小三号粗宋体,左对齐,用“1.1”、“1.2”、“1.3”…等表示序号。

三级标题,四号粗宋体,左对齐,用“1.1.1”、“1.1.2”、“1.1.3”…等表示序号。

(六)正文小四号宋体,两端对齐,1.5倍行距。

(七)图、表1.表头包括:表标识及表名两部分,表头在表上,居中,用五号宋体字。

2.图头包括:图标识及图名两部分,图头在图下,居中,用五号宋体字。

(八)参考文献格式:[序号]作者.译者.书名.版本.出版社,出版时间(九)报告封页及模版见下页沈阳航空工业学院课程设计报告课程设计名称:数据结构课程设计课程设计题目:PRIM算法求最小生成树院(系):计算机学院专业:计算机科学与技术班级:7401102班学号:200704011030姓名:指导教师:郑志勇目录沈阳航空工业学院 ...................................................................................................... - 2 -1 需求分析 (1)1.1题目内容及要求 (1)1.2题目分析 (1)2 系统设计 (3)2.1数据结构设计 (3)2.2函数设计 (4)2.2.1系统流程 (5)图2.2.1 系统流程 (5)2.2.2 PRIM 函数流程 (5)2.2.3 Huitu函数流程 (6)2.2.4 GraphicVer函数输出邻接矩阵 (6)3 调试分析 (7)3.1调试初期 (7)3.2调试中期 (7)3.3调试后期 (9)4 测试及运行结果 (10)4.1欢迎界面 (10)4.2获取输入,绘制无向图 (10)4.3输出邻接矩阵 (13)4..4.演示PRIM算法生成最小生成树 (13)4.5用户退出 (14)参考文献 (15)附录(关键部分程序清单) (16)1 需求分析1.1 题目内容及要求以合适方便的方式输入一个带权值的无向图,采用合适的存储结构存储该无向图。

然后根据PRIM算法求该无向图的最小生成树并输出。

要求:1.输入无向图的方法尽量简单方便2.要能够形象方便地观察无向图的图形结构3.要能够形象地演示PRIM算法求最小生成树的过程1.2 题目分析刚拿到题目,乍看一下题目很简短,貌似很简单,但是细看之后就发现了很多隐藏在简短语句后的更深一层次的要求。

首先是“以合适方便的方式输入”,短短十个字就向你提出了两方面要求:首先是“输入”,即代表你最好可以得到一种通用的算法让你对一定范围内的数据进行运算后从而得到正确的结果;“合适方便”即提示你要从输入方便且有利于运算的输入数据的方法;采用合适的存储结构必然是本次课设当之无愧的重点,亦是此题目的第三方面要求;最后就是用PRIM算法求无向图的最小生成树。

PRIM算法在理解与实现方面不是很困难,但要求能够形象的演示该算法就不是那么简单了。

无论从算法角度,还是从输入方便、存储安全角度,数组都是此次课设的不二选择,即采用邻接矩阵的存储方式来存储无向带权图。

虽然邻接表的动态存储可以令该算法使用更大规模的数据并在一定范围内比数组更加节省空间并有更高的效率,但此次课设另一个重点就是演示算法而非真正的应用于实际问题,所以只需要较少的数据量来完成PRIM算法的演示即可。

故数组的便于操作及更加稳定、方便的优势便凸显出来。

在画图这个问题上,我曾一度找错了方向。

刚拿到题目时,我只是望文生义的认为我需要演示的是最小生成树一步一步的演示过程,这让我一度选择VC 6.0中的MFC来演示过程。

但后来,当我因为MFC当量调用WINDOWS的程序并有较多的头文件而焦头烂额的时候,重读课设要求的时候我才发现,过于注重细枝末节的我竟没有抓住此题目真正要求!“模拟PRIM算法最小生成树的过程”即是让你显示PRIM算法在更接近计算机可以理解的方式上显示其具体过程。

Turbo C 的超强的图像处理让我明白,它就是我这次课设的系统环境了。

2 系统设计2.1数据结构设计对于无向图的任何操作,无疑都必须依赖于数据的存储结构。

这里的存储结构不仅仅指的是数据在计算机中的物理内存,更多的是抽象程度更高的抽象数据结构。

图的存储结构主要有两种:邻接矩阵和邻接表。

邻接表以一个一维数组作表头节点存储图的顶点,然后利用表头引出所有以该点为箭尾的邻接边的信息;而邻接矩阵则是单独建立一个一维数组来存储顶点的信息,并以顶点的个数来建立一个相应的N阶对称矩阵,以二维数组存储单元来存储相应边的权值。

由于PRIM算法需要多次修改closeedge[ ]中的adjvex和lowcost 值,且此次数据规模较小,只需达到演示部分数据即可,所以统一采用数组的存储结构,即亦采用邻接矩阵的存储结构来存储无向带权图更利于实现及操作。

邻接矩阵的抽象数据结构定义:#define INFINITY INT_MAX //最大值#define MAX_ERTEX_NUM 20 //最大顶点数typedef enum {DG , DN , UDG , UDN }GraphKind;//{ 有向图,有向网,无向网,无向图}typedef struct Arc Cell{VRType adj ; // VRType 是顶点关系的类型。

对无权图,用1和0表示相邻否;对//带权图则为权值类型InfoType * info; //该弧相关信息的指针}ArcCell , AdjMatrix [ MAX_VERTEX_NUM][MAX_VERTEX_NUM];Typedef struct {VertexType vexs [ MAX_VERTEX_NUM] ; //顶点向量AdjMatrix arcs ; // 邻接矩阵int vexnum , arcnum ; //图的当前顶点数和弧数GraphKind kind ; // 图的种类标志}Mgraph ;2.2函数设计本系统所使用的函数见表2.2.1本系统所调用函数调用的关系见图2.2.2图2.2.2 本系统的函数调用关系2.2关键流程流程图能直观和系统地把主函数的各个执行步骤和调用的子函数以及调用先后表示出来,子函数中也有调用其他子函数的情况,画出子函数的流程图能清楚地看出子函数中各步语句的执行,下面是关于主函数流程和关键的子函数流程图的直观表示。

2.2.1系统流程图2.2.1 系统流程2.2.2 PRIM 函数流程表2.2.2 PRIM 函数流程2.2.3 Huitu函数流程表2.2.3 Huitu函数流程2.2.4 GraphicVer函数输出邻接矩阵图2.2.4 GraphicVer函数输出邻接矩阵3 调试分析3.1 调试初期由于编写的程序具有模块化的特性,且VC 6.0 的调试显然由于TC及个人对VC的熟练程度远优于TC等方面,我选择先在VC 6.0环境下完成除图形化演示算法过程函数的其他过程。

由于数据结构选择的较合理,且对PRIM算法理解的较为深刻,所以在此环境下的调试并没有太多困难,只是简单的笔误。

添加了画图函数后,我就不得不使用TC编程环境。

本人使用的是vista 系统,刚运行TC就发现提示:该操作系统不支持16 bit MS-DOS 系统。

上网查看帮助,安装了DOSBOX软件虚拟出DOS系统运行,才开始之后的调试。

3.2调试中期由于Turbo C 2.0 不支持鼠标,更没有剪切、粘贴等常用快捷的操作,且本人对计算机图形学、TC的图形函数了解甚少,本人电脑更是不兼容TC全屏模式,所以这段时期成为最让本人备受煎熬的时期。

首先,由于TC 操作复杂,更因为本人变成习惯不好,导致经常一运行就死机还没保存过的代码就又“恢复出厂化”,让所见之人无不扼腕惋惜,本人亦是痛心疾首,苦不堪言。

编译过程出现过的错误有把自定义函数的名字与TC 图形化函数其中一个的关键字相同,TC显示“该函数定义了多重特性”或“该函数数值过多”等类似提示的错误图3.2.1 初始化错误将自定义的initgraph函数重新命名为void huitu( ),即可排除此错误。

再次编译,又发现指针错误:图3.2.2 指针错误Outtextxy(int x ,int y ,*p),即要求最后一项为指向一字符串的指针。

数组就是指针,如果这里出错,那只应该是我定义的lowcose[ ]存储的数不是字符串。

所以我曾试图用strcpy()将数组内数据一一进行传拷贝到一指针,然后再调用outtextxy()。

但是结果依然错误!后来,在同学的帮助下,我终于弄明白是因为我数组内存储的是整数型数据,必然无法通过strcpy( )转换成指针。

后来,我改用vsprintf(tmp,"%d",&lowcost[vex-i]),即现将整型转化为字符串,此错误即可排除。

3.3 调试后期图3.3 连接错误这是经过多次修改后,最后一个编译错误。

该名定义是你所使用的视频显示模式,影响的是图形化后的屏幕像素及可支持的最大色彩。

经试验,此程序在另一台XP电脑上可编译成功,故本人认为是由于VISTA 的兼容性导致TC无法调用该定义,即使使用虚拟机也无法排除。

考虑到此语句对输出结果影响不大,故将此语句删除,即使得TC自动获取其他可用的视频模式。

编译成功!4 测试及运行结果4.1 欢迎界面运行程序,首先进入用户的欢迎界面。

模拟界面向导IRIS采用互动式的方法提示用户进入PRIM算法演示界面。

首先IRIS会先询问用户是否愿意看PRIM算法演示,若此时用户选择“y”,用户即可顺利进入模拟PRIM 的程序(见图4.1.1);图4.1.1 用户欢迎界面及正常进入算法演示界面否则,向导友情提示可以直接退出程序,其效果图见图4.1.2。

图4.1.2 用户选择退出算法演示的界面4.2获取输入,绘制无向图创建无向图,动态显示在屏幕上,并输出其存储结构,即无向网的邻接矩阵。

首先按照提示,收入先要创建顶点的坐标及其名。

其效果图见图4.2.1图4.2.2 动态建立无向图输入时需要注意的是,由于该程序时默认添加一点则连接相应的直线,所以在一点多线的时候,像例子中的A点,就要重新返回A后再连接其他点。

具体操作见图4.2.3。

相关文档
最新文档