以邻接多重表为存储结构-实现连通无向图的深度优先和广度优先遍历.docx

以邻接多重表为存储结构-实现连通无向图的深度优先和广度优先遍历.docx

ID:55414240

大小:14.30 KB

页数:13页

时间:2020-05-12

以邻接多重表为存储结构-实现连通无向图的深度优先和广度优先遍历.docx_第1页
以邻接多重表为存储结构-实现连通无向图的深度优先和广度优先遍历.docx_第2页
以邻接多重表为存储结构-实现连通无向图的深度优先和广度优先遍历.docx_第3页
以邻接多重表为存储结构-实现连通无向图的深度优先和广度优先遍历.docx_第4页
以邻接多重表为存储结构-实现连通无向图的深度优先和广度优先遍历.docx_第5页
资源描述:

《以邻接多重表为存储结构-实现连通无向图的深度优先和广度优先遍历.docx》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、/*【基本要求】以邻接多重表为存储结构,实现连通无向图的深度优先和广度优先遍历。以用户指定的结点为起点,分别输出每种遍历下的结点访问序列和相应生成树的边集*///________头文件___________________________________________________________#include<iostream>using namespace std;//_______无向图的邻接多重表存储表示p166____________________________________const int NUM=20;const int Data_Num=2;//每个顶

2、点所表示的数据typedef char VertexType[Data_Num];/*#define MAX_VERTEX_NUM 20typedef struct emnu{int unvisited;int visited;} VisitIf;typedef struct InfoType{};typedef struct VertexType{};*/typedef struct EBox{int mark;    //访问标记int ivex,jvex;   //该边依附的2个顶点位置struct EBox *ilink,*jlink;   //分别指向依附这2个顶点的下一

3、条边//InfoType *info;   //该边信息指针}EBox;typedef struct VexBox{VertexType data;EBox *firstedge;   //指向第一条依附该顶点的边}VexBox;typedef struct{VexBox adjmulist[NUM];int vexnum,edgenum;   //无向图的当前顶点和边数}AMLGraph;//_________________________队列的定义_____________________________________typedef int QElemType;typede

4、f struct QNode{QElemType data;struct QNode *next;}QNode,*QueuePtr;typedef struct{QueuePtr front,rear;}LinkQueue;//_____________________寻找指定数据______________________________________________//寻找输入的数据在图中的位置,若不存在则返回-1int LocateVex(AMLGraph G,VertexType u){int i;for(i=0;i<G.vexnum;i++)if(strcmp(u,G.

5、adjmulist[i].data)==0)return i;return -1;}//________________________构造无向图_______________________________________________//采用邻接多重表存储表示,构造无向图Gint CreateGraph(AMLGraph &G){cout<<"请输入图的顶点数: ";cin>>G.vexnum;//输入图当前的顶点数cout<<"请输入图的弧数:   ";cin>>G.edgenum;//输入图当前的边数cout<<"请输入每个顶点所对应的值:"<<endl;for(int 

6、i=0;i<G.vexnum;i++){cin>>G.adjmulist[i].data;//输入顶点值G.adjmulist[i].firstedge=NULL;//初始化指针}VertexType v1,v2;EBox *p;int j;//每条弧所关联的两个结点for(int k=0;k<G.edgenum;k++){cout<<"请输入第"<<k+1<<"弧的始点和终点:";cin>>v1;cin>>v2;i=LocateVex(G,v1);j=LocateVex(G,v2);//确定v1和v2在图G中的位置p=(EBox *)malloc(sizeof(EBox));//

7、对弧结点进行赋值(*p).mark=0;(*p).ivex=i;(*p).jvex=j;(*p).ilink=G.adjmulist[i].firstedge;(*p).jlink=G.adjmulist[j].firstedge;G.adjmulist[i].firstedge=G.adjmulist[j].firstedge=p;}return 1;}//返回V的值VertexType* GetVex(AMLGraph G,int v){if(v>G.vexnum

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。