Python数据结构与算法——第四十五课 图结构的创建

  图结构应该可以向其中添加顶点、添加边、添加权重等。按图的表示方式可用两种数据结构实现:邻接矩阵方式和邻接表方式。以下图为例分别做代码实现。

 

 

  邻接矩阵方式

  添加顶点时用字典存储键所对应在邻接矩阵中的下标;反过来也储存下标对应的键;添加边是在邻接矩阵中把其他顶点与新增顶点交汇的下标加上权重,其他全用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算法图解》何韬编著 清华大学出版社