#include <iostream>
#define MAXVEX 4 //起始顶点数默认为6,可在此直接修改
#define MAXEDGE 5 //起始边的数默认为5,可在此直接修改
using namespace std;
//该代码是无向图的邻接表
//注意点1:下标0的位置都不用,所以要多开辟一个空间
//注意点2:头结点信息既可以是字符A,B,C,D,也可以是字符'1','2'...
//注意点3:在创建邻接表时,使用头插法将边结点接在头结点之后
//将无向图的邻接表改为有向图的邻接表,则只要删去下面一段代码即可
//EdgeNode *s2 = new EdgeNode;
//s2->adjvex=m; //无向图现在n是头,m是尾
//s2->next = g.adjlist[n].firstedge;
//g.adjlist[n].firstedge=s2;
//此时这个有向图的邻接表是根据顶点的出度来设置的,而逆邻接表是根据结点的入度来设置的,区分下即可
typedef struct EdgeNode
{
int adjvex;
struct EdgeNode *next;
}EdgeNode; //边结点
typedef struct
{
char vextexinfo; //存放头结点信息(如A,B,C,D)
EdgeNode *firstedge; //指向该结点的临边
}VextexNode,AdjList; //头结点(即邻接表)
typedef struct
{
int vexNum; //顶点数
int edgeNum; //边数
AdjList adjlist[MAXVEX+1
C++数据结构-有向图无向图的邻接表创建
最新推荐文章于 2024-04-18 12:52:36 发布