#define SIZE 10
//邻接矩阵表示
typedef struct{
int e_num; //边数
int v_num; //顶点个数
int links[SIZE][SIZE]; //邻接矩阵
char vexs[SIZE];
}Graph1;
//邻接表表示
typedef struct edgeNode{ //边节点
char vex;
int value;
struct edgeNode *next;
}edgeNode;
typedef struct vexNode{ //顶点节点
char data;
edgeNode *firstNode;
}Vexs[SIZE];
typedef struct{ //图
int e_num; //边数
int v_num; //顶点个数
Vexs vex_arcs; //邻接表
}Graph2;
void trans(Graph1 *p, Graph2 *q){
q->e_num = p->e_num;
q->v_num = p->v_num;
int i,j;
for(i=0; i<p->v_num; i++){
q->vex_arcs[i].data = p->vexs[i];
q->vex_arcs[i].firstNode = NULL;
for(j=0; j<p->v_num; j++){
if(p->links[i][j] != 0){
//头插法
edgeNode *new = (edgeNode *)malloc(sizeof(edgeNode));
new->vex = p->vexs[j];
new->next = q->vex_arcs[i].firstNode;
q->vex_arcs[i].firstNode = new;
}
}
}
}
无向图邻接矩阵转邻接表
最新推荐文章于 2023-07-17 17:35:27 发布