数据结构学习(C++)——图(总结)

以上就是现在的教科书里面,图的全部内容了。写完之后,茫茫然,不知道学完之后有什么用……就像我在开篇写的,图的应用太广泛了,以至于现在觉得图“没什么用”——很奇怪的逻辑,只有仔细体味才能觉察到写教科书的人的无奈。

不同于前面的链表和树,在图这里,储存方法不是重点,我们更多的注意力放在了算法上。我在写程序的时候,也尽量做到了算法和储存方法无关。然而算法实际上就是现实问题的抽象,如果我们的常识所不及,我们也就没有办法来介绍算法,反过来说,几乎遇不到的问题,我们也不会对它的算法感兴趣。

因此,在图的算法里面,由铺设管道引出了最小生成树,由提高通信、交通网络可靠性引出了关节点和重连通分量,由地图寻径引出了最短路径,由工程预算引出了关键路径。这些恐怕是我们能够理解的全部了,如果再来一个电气网络计算,没点物理知识恐怕是要完。

但即使这样,上面的各个算法仍然离我们很远,我们大多数人恐怕永远都不会知道管道是怎么铺的。我想,这里面除了最短路径能引起大多数人的兴趣之外,其他的就只能走马观花的看看罢了。这也使得图的学习很像“聋子的耳朵”,真正接触到图的用途的人不多,并且即使用到图,也仅仅是个别的算法。

正像数据结构教学的通病一样,学无所用常常导致学无所成,前面的链表、树好歹还能做点什么东西出来,到了图这里,除了做个导游系统,我们也做不出别的什么了。写到这里很无奈,但我也只能是无奈……

那么,学完了图,我们应该掌握什么呢,是上面零散的算法吗?我的看法是,不是。我觉得我们更应该知道那些算法是怎么“创造”出来的,如果遇到了类似的问题,能不能“派生”出新的算法。因此,我觉得《数据结构算法与应用-C++语言描述》这本书,将图的最小生成树、最短路径、拓扑排序算法放到了贪婪算法里讲解,是一种更为合理的安排。

最后对在学习图时像我一样茫然的人深表同情。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
内含资源如下: 1.基本数据结构 1.1.Array ........... 动态数组 1.2.LinkedList ... 链表 1.3.BST .............. 二分搜索树 1.4.MapBST ..... 二分搜索树(用于实现映射) 1.5.AVLTree ...... AVL树 2.接口 2.1.Queue ........... 队列接口 2.2.Stack .............. 栈接口 2.3.Set .................. 集合接口 2.4.Map ............... 映射接口 2.5.Merger .......... 自定义函数接口 2.6.UnionFind ..... 并查集接口 3.高级数据结构 3.1.ArrayQueue .......................... 队列_基于动态数组实现 3.2.LinkedListQueue .................. 队列__基于链表实现 3.3.LoopQueue ........................... 循环队列_基于动态数组实现 3.4.PriorityQueue ....................... 优先队列_基于最大二叉堆实现 3.5.ArrayPriorityQueue ............. 优先队列_基于动态数组实现 3.6.LinkedListPriorityQueue ..... 优先队列_基于链表实现 3.7.ArrayStack ............................. 栈_基于动态数组实现 3.8.LinkedListStack ..................... 栈_基于链表实现 3.9.BSTSet ..................................... 集合_基于二分搜索树实现 3.10.LinkedListSet ....................... 集合_基于链表实现 3.11.BSTMap ................................ 映射_基于二分搜索树实现 3.12.AVLTreeMap ....................... 映射_ 基于AVL树实现 3.13.LinkedListMap .................... 映射_基于链表实现 3.14.MaxHeap ............................. 最大二叉堆 3.15.SegmentTree ...................... 线段树 3.16.Trie ......................................... 字典树 3.17.QuickFind ............................ 并查集_基于数组实现 3.18.QuickUnion ......................... 并查集_基于树思想实现
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值