图的十字链表实现C语言
图的十字链表写法,挺适合你在有向图的时候拿来参考。用的是 C 语言,结构清晰、注释也到位,不只是能跑,能懂才是重点。每个顶点都能方便地找到它的入边和出边,适合那种边多点少的稀疏图。
头文件、结构体定义得比较规整,像ArcBox
、VexNode
这些关键结构,边的连接方式一目了然。你想自定义数据内容也容易,扩展性还不错。
核心函数是CreateDG
,逻辑清楚,先录入顶点再录入边,边是用链表动态插进去的,查找顶点用的Locate
也不难。打印图结构那块,适合调试,能看到每个点的出入边。
图结构要搞得清楚,光靠邻接矩阵其实太死板了。十字链表灵活多了,查找入度出度直接走指针,效率比邻接表还高一截。你要拓扑排序、依赖图啥的,用这个结构还挺舒服的。
如果你之前没接触过十字链表,建议先看看边的插入逻辑,多画几个图理一下。还有别忘了手动释放内存,别让链表成了内存黑洞。嗯,代码里虽然没实现free()
,但你上线前可得补上。
顺带放几个相关链接,你要是想扩展下理解,可以看看稀疏矩阵的十字链表实现(点这),或者图遍历的课程设计(这也挺实用)。
,这段代码当参考资料还挺香的,适合自学、也适合教人。如果你在搞图相关的课程设计或者刷图论题目,不妨试试用这个结构重写一遍试试。
2.01KB
文件大小:
评论区