第2章 数据结构
数据结构是复杂算法的核心。数据结构的选择会对算法实现的复杂性产生巨大的影响。选择了正确的数据结构,编程会十分容易;选择了错误的数据结构,则需要大量的时间和代码量作为决策失误的代价。
在本章中,你将复习到一些每个程序员都应熟悉的基础数据结构。我们将以一个孩子们喜欢的扑克牌游戏作为背景展开讨论。很多经典的编程题目都是以游戏为背景的。几乎所有人在初学编程的课程中都会接触到汉诺塔(Hanoi Tower)、骑士周游、八皇后这样的游戏。
2.1 基本数据结构
我们首先介绍栈(stack)、队列(queue)、字典(dictionaries)、优先队列(priority queues)、集合(sets)等*重要的数据结构的抽象操作(abstract operations),接下来简单描述从头实现这些操作的*简单的方法。
请注意,c++和Java这样的现代面向对象程序设计语言都已经在它们的标准库中实现了基础数据结构。我们将在2.2节中简单地介绍它们。每个程序员都应该花一些时间来熟悉这些数据结构,而不是每次都从头实现。当你很好地熟悉了这些库的使用方法后,在阅读本节时便可专注于这些数据结构所擅长的领域而非实现细节。
……