欢迎来到天天文库
浏览记录
ID:16170302
大小:18.46 KB
页数:15页
时间:2018-08-08
《以邻接多重表为存储结构,实现连通无向图的深度优先和广度优先遍历.》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、/*【基本要求】以邻接多重表为存储结构,实现连通无向图的深度优先和广度优先遍历。以用户指定的结点为起点,分别输出每种遍历下的结点访问序列和相应生成树的边集*///________头文件___________________________________________________________#include<iostream>using namespace std;//_______无向图的邻接多重表存储表示p166____________________________________const
2、 int NUM=20;const int Data_Num=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; //访问标
3、记int ivex,jvex; //该边依附的2个顶点位置struct EBox *ilink,*jlink; //分别指向依附这2个顶点的下一条边//InfoType *info; //该边信息指针}EBox;typedef struct VexBox{VertexType data;EBox *firstedge; //指向第一条依附该顶点的边}VexBox;typedef struct{VexBox adjmulist[NUM];int vexnum,edgenum; //无向图的
4、当前顶点和边数}AMLGraph;//_________________________队列的定义_____________________________________typedef int QElemType;typedef struct QNode{QElemType data;struct QNode *next;}QNode,*QueuePtr;typedef struct{QueuePtr front,rear;}LinkQueue;//_____________________寻找指定数据_
5、_____________________________________________//寻找输入的数据在图中的位置,若不存在则返回-1int LocateVex(AMLGraph G,VertexType u){int i;for(i=0;i<G.vexnum;i++)if(strcmp(u,G.adjmulist[i].data)==0)return i;return -1;}//________________________构造无向图_______________________________
6、________________//采用邻接多重表存储表示,构造无向图Gint CreateGraph(AMLGraph &G){cout<<"请输入图的顶点数: ";cin>>G.vexnum;//输入图当前的顶点数cout<<"请输入图的弧数: ";cin>>G.edgenum;//输入图当前的边数cout<<"请输入每个顶点所对应的值:"<<endl;for(int i=0;i<G.vexnum;i++){cin>>G.adjmulist[i].data;//输入顶点值G.adjmulist[i]
7、.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));//对弧结点进行赋值(*p).mark=0;(*p).ive
8、x=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
此文档下载收益归作者所有