连通集(浙大数据结构习题)
#include<stdio.h>
#include <stdlib.h>
#define maxsize 10
#define false 0
#define true 1
typedef int vertex; //顶点下标
typedef int weighttype;
//图的邻接表建立
//1.图的节点 边,邻接表节点 头结点指针数组 图
typedef struct edgenode *edge;
struct edgenode {
/*边,通过输入边来构建图*/
vertex v1, v2;
//weighttype weight; //权重
};
typedef struct advnode *pvnode; /*邻接表的邻接点链节点*/
struct advnode
{
vertex v;
//weighttype weight;
pvnode next;
};
typedef struct vnode {
//表头
pvnode firstnode;
//int data; //非必须
}vlist[maxsize]; //邻接表
typedef struct gnode *Lgraph; //图
struct gnode {
int N;
int E;
vlist Glist;
};
//2.图的建立 初始化 插入边 建立图
Lgraph create(int vnum,int edgenum) {
Lgraph g = (Lgraph)malloc(sizeof(struct gnode));
g->N = vnum;
g->E = edgenum; //建立有vnum个顶点的图
for (int i = 0; i < vnum; i++) {
g->Glist[i].firstnode = NULL; //初始化表头指针为空
}
return g;
}
int insert(int n, pvnode *q) {
pvnode temp = (pvnode)malloc(sizeof(struct advnode));
temp->v