- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《数据结构与算法分析》
实验报告书
学 期: 2014 - 2015 学年第 2 学期
班 级: 信息管理与信息系统2班
学 号: 1310030217
姓 名: 田洪斌
实验类别: (★)基础型 ( )设计型
实验时间:
成 绩:
信息管理系
实验内容
实现程序,完成构造无向无权图的邻接表并在其上进行递归的深度优先遍历和广度优先遍历。
实验目的
1、掌握图结构的静态及操作特点;
2、掌握图结构的静态存储和常见操作在C语言环境中的实现方法;
3、掌握图结构的遍历算法在C语言环境中的实现方法。
4、掌握求最小生成树、最短路径、关键路径的算法实现。
需求分析
用无向图结构表示来完成输入、编辑、调试、运行的全过程。并规定:
手动输入无向图的顶点数、边数、顶点及权值
程序可以输入、调试、运行、显示
测试数据:用户手动输入无向图的顶点数、边数、顶点及权值
系统设计
1.数据结构设计
本程序在定义图的数据结构时采用的是结构体变量,在该结构体中又定义了字符型变量和字符型数组。字符型数组还是采用的是结构体。程序本身的功能实现是在主函数的基础上通过给所调用函数参数实现,使程序模块化。
程序结构设计
(1)程序中主要函数功能:
main()//////////////////////////////////////////////////////////主函数
menu()/////////////////////////////////////////////////////////菜单
CreateDN(MGraph G)///////////////////////////////构造无向图
Display(MGraph G)/////////////////////////////////////邻接矩阵的输出
函数调用关系
见图4-1。
图4-1 函数关系图
调试分析
1.算法和函数中出现了一些系统无法识别的变量,照成程序出现了错误。原因是没有注意算法与源程序的区别。算法是简单的对源程序进行描述的,是给人阅读的,所以有些变量没有定义我们就能看懂。而程序中的变量一定要先定义才能够被引用,才能被计算机识别。
2.在调试过程中遇到问题是利用C++程序进行调试的,找出错误并改正。
3.数据生成最小生成树函数运行不正常,经检查程序,发现是输入程序源代码错误,更改后错误排除;
测试结果
1.运行时输入正确密码进入主界面,系统根据输入的数字选项来调用相应的函数。主要实现“功能选择”的界面,在这个界面里有显示系统的五大功能,根据每个功能前面的序号进行选择。以下为该界面:
图4-2 主界面
2.当选择1建立无向图时,运行结果如下图:
图4-3 无向图的建立
3.当建立完成输入邻接矩阵的输出时,运行结果如下图:
图4-4邻接矩阵的输出
测试中,分别录入顶点数为2,边数为1作为无向图的初始值,输出数据后显示正常;经测试,实现了生成最小生成树的预期设计功能,具有一定的健壮性。
经验和体会
本次试验利用C语言编程,完成了无向图中的建立、邻接矩阵的输出等功能,提升了我的C语言编程能力,同时也加深了我对数据结构中关于无向图结构有关基础概念、基本算法的理解,同时,通过程序的调试及观察分析程序运行的情况,也进一步增加了我调试程序的经验,并使我认识到了无向图的结构。
程序源代码
#includestdio.h
#includestdlib.h
#includestring.h
#includelimits.h
#define MAX 20
#define MAX_NAME 3
#define INFINITY INT_MAX
typedef int VPType;
typedef char Info Type;
typedef charVertexType[MAX_NAME]
typedef struct
{
VRType adj;
Info Type *info;
}ArcCell,AdjMatrix[MAX][MAX];
typedef struct
{
Vertex Type adjvex;
VRType lowcost;
}minside[MAX];
int menu()
{
int number;
do
{
system(cls);
printf(\t\t*************【菜单】*************\n);
pr
文档评论(0)