- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[计算机]图的建立及遍历实验报告
实验报告6
课程 数据结构 实验名称 图的建立及遍历1.学会用邻接矩阵和邻接表实现图结构和对图的基本操作。
2.掌握对图操作的具体实现;
3. 掌握图的两种遍历算法(深度优先、广度优先);
4、掌握求图的最小生成树和顶点间最短路径的算法;
1、建立图的邻接表。
2、深度优先遍历,显示遍历结果。
3、用Prim法求连通图的最小生成树
4、用Dijkstra算法求某一确定顶点到所有其它顶点的最短路径。
#include iostream
#include cstring
using namespace std;
#define OK 1
#define ERROR 0
#define FALSE 0
#define TRUE 1
#define MAX_VERTEX_NUM 20
typedef int Status;
typedef int InfoType;
typedef char VertexType;
int visited[MAX_VERTEX_NUM]={0};
typedef struct ArcNode//弧的结构
{
int adjvex;
struct ArcNode *nextarc;
InfoType info;
}ArcNode;
typedef struct VNode//顶点的结构
{
VertexType data;
ArcNode * firstarc;
}VNode,AdjList[MAX_VERTEX_NUM];
typedef struct //图的结构
{
AdjList vertices;
int vexnum,arcnum;
int kind;
}AlGraph;
struct { //PRIM算法的辅助数组
VertexType adjvex; //记住前驱
int lowcost; //最小开销
}closedge[MAX_VERTEX_NUM];
struct {//DLJ算法的辅助数组
int adjvex; //记住前驱
int lowcost; //至起点路径的最小开销
bool flag;
}closedlj[MAX_VERTEX_NUM];
void CreateGraph(AlGraphG)//创建邻接表
{
coutinput vexnum,arcnum:endl;
cinG.vexnumG.arcnum;
cout输入顶点值:endl;
for(int i=0;iG.vexnum;i++)//输入顶点信息
{
cinG.vertices[i].data;
G.vertices[i].firstarc=NULL;
}
cout输入弧的信息endl;//输入弧的信息
for(i=0;iG.arcnum;i++)
{
int tail,head;
int info;
ArcNode *p,*pnew;
cout输入弧尾、弧头、弧的长度endl;
cintailheadinfo;
pnew=(ArcNode *)malloc(sizeof(ArcNode));
pnew-adjvex=head;
pnew-info=info;
pnew-nextarc=NULL;
p=G.vertices[tail-1].firstarc;
if(!p)
G.vertices[tail-1].firstarc=pnew;
else
{
while(p-nextarc!=NULL) p=p-nextarc;
p-nextarc=pnew;
}
}
}
void VisitFunc(AlGraph G,int v)//访问函数
{
coutG.vertices[v-1].dataendl;
}
int FirstAdjvex(AlGraph G,int v)
{
if(G.vertices[v-1].firstarc)
return G.vertices[v-1].firstarc-adjvex;
else
return -1;
}
int NextAdjvex(AlGraph G,int v,int w)//求下一个邻接点
{
ArcNode *p;
p=G.vertices[v-1].firstarc;
while(p-adjvex!=w)
p=p-nextarc;
if(p-nextarc)
return p-nextarc-adjvex;
else
return -1;
}
void (*Vis
您可能关注的文档
- [计算机]图凌制造执行系统白皮书.doc
- [计算机]图解WPS个性水印是如何炼成的.pdf
- [计算机]在 Windows Server 2003 中配置打印机和打印服务器设置.doc
- [计算机]图解.doc
- [计算机]图层应用例.doc
- [计算机]在PowerPoint2003中插入Flash及控件属性.doc
- [计算机]在Windows Server 2003系统中安装配置群集服务.doc
- [计算机]在虚拟机中启动系统_出现Operating System not found--解决方法.doc
- [计算机]基于ArcGISEngine的公路冰雪灾害预警系统分析与设计.pdf
- [计算机]基于GIS的农网配电理论线损系统的应用.pdf
文档评论(0)