开篇
数据结构是计算机科学与技术专业非常重要的一门核心基础课,计算机科学各个领域以及各种应用软件都要使用相关的数据结构和算法。
本篇的主要目的不是提供关于数据结构和算法的定理及证明。本书采用的模式是利用不同的复杂度改善问题的解决(对于每个问题,你将发现多个具有不同复杂度及降低复杂度的解法)。基本上,这一思路就是列举某个问题的所有可能性。通过这种方式,即使你遇到一个新问题,它也能够向你指明如何思考该问题所有可能的结果。对于正在准备面试、参加选拔性考试以及校园面试的读者很有帮助。
一、递归和回溯
什么是递归
任何调用自身的函数称为递归。用递归方法求解问题,要点在于递归函数调用自身去解决一个规模比原始问题小-些的问题。这个过程称为递归步骤。递归步骤会导致更多的递归调用。因此,保证递归过程能够终止是很重要的。每次函数都会用比原问题规模更小的问题来调用自身。问题是随着规模不断变小必须能最终收敛到基本情形。
二、链表
什么是链表
链表是一种用于存储数据集合的数据结构。
三、栈
什么是栈
栈是一种用于存储数据的简单数据结构(与链表类似)。数据入栈的次序是栈的关键。可以把自助餐厅中的一-堆盘子看作-一个栈的例子。当盘子洗干净后,它们会添加到栈的顶端。当需要盘子时,也是从栈的顶端拿取。所以第一个放人栈中的盘子最后才能被拿取。
四、列队
什么是列队
队列是一种用于存储数据的数据结构(与