图结构应该可以向其中添加顶点、添加边、添加权重等。按图的表示方式可用两种数据结构实现:邻接矩阵方式和邻接表方式。以下图为例分别做代码实现。
邻接矩阵方式
添加顶点时用字典存储键所对应在邻接矩阵中的下标;反过来也储存下标对应的键;添加边是在邻接矩阵中把其他顶点与新增顶点交汇的下标加上权重,其他全用0表示。
程序代码:
运行结果:
邻接表方式
邻接表采用字典方式存储,顶点名为键,边链表为值。
程序代码:
运行结果:
邻接矩阵转邻接表
把矩阵中每行的start名称为键,非0的节点名称和权值为列表的元素的列表为值。
程序代码:
运行结果:
邻接表转邻接矩阵
用邻接表的键创建一个全0矩阵,然后用邻接表填写边的权值。
程序代码:
运行结果:
练习题1:一个邻接表式的图打印出来是下面的样子,请问它是有向图吗?编程说明你的判断。
A => [['B', 1], ['C', 2]]
B => [ ['C', 3], ['D', 4]]
C => [ ['D', 5]]
D => []
学思营编程课堂基于蓝桥STEM86平台https://www.stem86.com,开展学编程三部曲:
Scratch(三年级以前)>>>Python(四年级以后)>>>C++(七年级以后)教育实验活动,任何人可以免费参加,打开https://xuesiying.stem86.com网页注册进入课堂,也可关注本公众号留言。
更多课程请打开“学思营”同步网站:
http://www.5xstar.com/doc.html
参考资料:
1、《Python算法图解》何韬编著 清华大学出版社