对于上面邻接矩阵查找顶点的下一个邻接点和判断是否有边存在,是通过遍历所有顶点和一个if语句完成,而在邻接表中,这一步操作就不一样了。 邻接矩阵比较熟悉,容易操作,但它适合用在稠密图,空间复杂度高O(n2),稀疏图中尤其浪费空间,所以有时需要采用邻接表。因此,这道题我准备试一下用邻接表,顺便加深一下对算法...
//邻接矩阵 int vexnum,arcnum; //图的当前顶点数和边数 }MGraph; void dgree(MGraph G); void CreatMGraph(MGraph *G);/* 创建图 */ int main() { MGraph G; CreatMGraph(&G); dgree(G); return 0; } void CreatMGraph(MGraph *G)
其中LGraph是邻接表存储的图,定义如下: 代码语言:javascript 复制 /* 邻接点的定义 */typedef struct AdjVNode*PtrToAdjVNode;struct AdjVNode{Vertex AdjV;/* 邻接点下标 */PtrToAdjVNode Next;/* 指向下一个邻接点的指针 */};/* 顶点表头结点的定义 */typedef struct Vnode{PtrToAdjVNode FirstEdge;/* ...
7-2 邻接表创建无向图# 输入格式: 输入第一行中给出2个整数i(0<i≤10),j(j≥0),分别为图G的顶点数和边数。 输入第二行为顶点的信息,每个顶点只能用一个字符表示。 依次输入j行,每行输入一条边依附的顶点。 输出格式: 依次输出各顶点的度,行末没有最后的空格。 输入样例: 5 7 ABCDE AB AD BC B...
然后,PTA上 第7章作业7-1 列出连通集 很好的考察了DFS和BFS的具体实现。 首先是题目要求: 因为题目中有个比较坑的要求, 所以我推荐用邻接矩阵的存储结构去创建图。(如果用邻接表去整,还要将邻接表中的邻接点域按从小到大排,麻烦) View Code 这是写代码前要想好的需要些什么结构体、函数、变量。