数据结构的 C++实现挺多,但马克·艾伦·韦斯的《数据结构与算法》算是经典中的经典了。书里的示例都用的是现代 C++,尤其是 C++11 的新特性,用起来还挺顺手。像是智能指针、lambda 表达式、右值引用这些,书里都有讲,讲得清楚还贴代码,照着改也不难。
常用的数据结构,比如数组
、链表
、栈
、队列
这些,书里讲得系统,代码风格也比较现代,不是那种老掉牙的写法。操作部分实现也比较细,像插入、删除、查找一类,讲完原理就直接上代码,看着还挺舒服的。
树结构和图结构的内容也挺实用,尤其是 AVL 树和平衡树部分,搞面试的朋友估计会比较有感触。图的部分也蛮全的,什么DFS
、BFS
、Dijkstra
、拓扑排序
都有,适合刷算法题之前过一遍。
算法部分也值得一提,讲了时间复杂度怎么推,空间怎么估,还顺带带你练习各种排序算法,比如快速排序
、归并排序
这些常考点,解释得清楚,也有实际代码。
C++11 的应用算是本书的亮点之一。像std::unique_ptr
、std::shared_ptr
这些智能指针用法,讲得到位,适合从老 C++转新标准的朋友看看。范围for
和 lambda 表达式的实战例子也挺有参考价值。
想动手练习的也有福了,书后配的例子代码都可以直接跑,基本不用大改环境。网上还有人整理了配套资源,比如源码合集,点进去就能下载。
如果你正在准备面试,或者想系统学下算法+数据结构,用 C++搞开发的,这本书真的蛮值得看一看。别担心太学术,还是偏实战,适合边看边敲。