基于c语言的最小生成树kruskal算法问题内容摘要:

找尾 { while ( parent[f] 0) { f = parent[f]。 } return f。 关键代码输出最小生成树 以下是主函数部门 int main(void)//主函数 { MGraph *G。 G = (MGraph*)malloc(sizeof(MGraph))。 if (G == NULL) { printf(memory allcation failed,goodbye)。 exit(1)。 } CreatGraph(G)。 MiniSpanTree(G)。 system(pause)。 return 0。 } 主函数通过调用不同的函数模块来实现的功能 以下是函数关系的调用图 Main( ) ________________________________ CreatGraph() MiniSpanTree( ) ________________ Sort ( ) Find( ) Swapn( ) 1 由于对函数调用关系不是非常清楚,导致在程序设计的时候思路不是非常的清晰 2 该程序只能满足图顶点比较少的最小生成树的实现,如果 用户要求更大的空间,可以在创建图的时候开辟更大的空间。 3 在程序输入的时候,必须顶点数值小 的先输入,否则程序将会出错。 这也是程序应该改进的地方。 4 算法的时空分析 1,对矩阵的初始化 ,设输入一个 n个顶点的图,那个将要对矩阵的 nxn 个元素进行初始化,所以时间复杂度为 O(N2) 2,输入权值和 边的时间复杂度为 O(n),所以构建图的时间复杂度为 O(N2+N) O(N2)。 空间复杂度为 S( N2) 4 在求最小生成树函数中,对边进行标记的时间复杂度为 O(N2)。 对权值进行排序的时间复杂度为 O(N2),对 parent 数组赋值的时间复杂度为 o(n),所以该函数的时间复杂度为 O( 2N2+N) 5 过这次课程设计,一方面 我 加深对课内所学的有关数据的逻辑结构和存储表示、数据结构的选择和应用、算法的设计和时空分析等课程基本内容的理解,另一方面,使我在 序设计方法(如抽象数据类型、结构化分析、模块化设计和结构化设计)、 C 语言程序调试和 测试方面受到比较系统的严格的训练。 1,输入图的顶点数和变数 2 任意输入两个图中连接的顶点 3 输入这两个顶点的。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。