目录 Contents Part I Preliminaries 预备知识 Chapter 1 Data Structures and Algorithms 数据结构和算法3 1.1 A Philosophy of Data Structures 数据结构的原则4 1.1.1 The Need for Data Structures 学习数据结构的必要性4 1.1.2 Costs and Benefits 代价与效益6 1.2 Abstract Data Types and Data Structures 抽象数据类型和数据结构8 1.3 Design Patterns 设计模式12 1.3.1 Flyweight 享元模式13 1.3.2 Visitor 访问者模式13 1.3.3 Composite 组合模式14 1.3.4 Strategy 策略模式15 1.4 Problems, Algorithms, and Programs 问题、算法和程序16 1.5 Further Reading 深入学习导读18 1.6 Exercises 习题20
Chapter 2 Mathematical Preliminaries 数学预备知识25 2.1 Sets and Relations 集合和关系25 2.2 Miscellaneous Notation 常用数学术语29 2.3 Logarithms 对数31 2.4 Summations and Recurrences 级数求和与递归32 2.5 Recursion 递归36 2.6 Mathematical Proof Techniques 数学证明方法38 2.6.1 Direct Proof 直接证明法39 2.6.2 Proof by Contradiction 反证法39 2.6.3 Proof by Mathematical Induction 数学归纳法40 2.7 Estimation 估计46 2.8 Further Reading 深入学习导读47 2.9 Exercises 习题48
Chapter 3 Algorithm Analysis 算法分析55 3.1 Introduction 概述55 3.2 Best, Worst, and Average Cases 最佳、最差和平均情况61 3.3 A Faster Computer, or a Faster Algorithm 换一台更快的计算机,还是换一种更快的算法62 3.4 Asymptotic Analysis 渐近分析65 3.4.1 Upper Bounds 上限65 3.4.2 Lower Bounds 下限67 3.4.3 Θ Notation Θ表示法68 3.4.4 Simplifying Rules 化简法则69 3.4.5 Classifying Functions 函数分类70 3.5 Calculating the Running Time for a Program 程序运行时间的计算71 3.6 Analyzing Problems 问题的分析76 3.7 Common Misunderstandings 容易混淆的概念77 3.8 Multiple Parameters 多参数问题79 3.9 Space Bounds 空间代价80 3.10 Speeding Up Your Programs 加速你的程序82 3.11 Empirical Analysis 实证分析85 3.12 Further Reading 深入学习导读86 3.13 Exercises 习题86 3.14 Projects 项目设计90
Part II Fundamental Data Structures 基本数据结构 Chapter 4 Lists, Stacks, and Queues 线性表、栈和队列95 4.1 Lists 线性表96 4.1.1 Array-Based List Implementation 顺序表的实现100 4.1.2 Linked Lists 链表103 4.1.3 Comparison of List Implementations 线性表实现方法的比较112 4.1.4 Element Implementations 元素的表示114 4.1.5 Doubly Linked Lists 双链表115 4.2 Stacks 栈120 4.2.1 Array-Based Stacks 顺序栈121 4.2.2 Linked Stacks 链式栈123 4.2.3 Comparison of Array-Based and Linked Stacks 顺序栈与链式栈的比较123 4.2.4 Implementing Recursion 递归的实现125 4.3 Queues 队列127 4.3.1 Array-Based Queues 顺序队列128 4.3.2 Linked Queues 链式队列133 4.3.3 Comparison of Array-Based and Linked Queues 顺序队列与链式队列的比较133 4.4 Dictionaries 字典133 4.5 Further Reading 深入学习导读145 4.6 Exercises 习题145 4.7 Projects 项目设计148
Chapter 5 Binary Trees 二叉树151 5.1 Definitions and Properties 定义及主要特性151 5.1.1 The Full Binary Tree Theorem 满二叉树定理153 5.1.2 A Binary Tree Node ADT 二叉树的抽象数据类型155 5.2 Binary Tree Traversals 遍历二叉树155 5.3 Binary Tree Node Implementations 二叉树的实现160 5.3.1 Pointer-Based Node Implementations 使用指针实现二叉树160 5.3.2 Space Requirements 空间代价166 5.3.3 Array Implementation for Complete Binary Trees 使用数组实现完全二叉树168 5.4 Binary Search Trees 二叉检索树168 5.5 Heaps and Priority Queues 堆与优先队列178 5.6 Huffman Coding Trees Huffman编码树185 5.6.1 Building Huffman Coding Trees 建立Huffman编码树186 5.6.2 Assigning and Using Huffman Codes Huffman编码及其用法192 5.6.3 Search in Huffman Trees 在Huffman树中搜索195 5.7 Further Reading 深入学习导读196 5.8 Exercises 习题196 5.9 Projects 项目设计200
Chapter 6 Non-Binary Trees 树203 6.1 General Tree Definitions and Terminology 树的定义与术语203 6.1.1 An ADT for General Tree Nodes 树结点的ADT204 6.1.2 General Tree Traversals 树的遍历205 6.2 The Parent Pointer Implementation 父指针表示法207 6.3 General Tree Implementations 树的实现213 6.3.1 List of Children 子结点表表示法214 6.3.2 The Left-Child/Right-Sibling Implementation 左子结点/右兄弟结点表示法215 6.3.3 Dynamic Node Implementations 动态结点表示法215 6.3.4 Dynamic “Left-Child/Right-Sibling” Implementation 动态左子结点/右兄弟结点表示法218 6.4 K-ary Trees K叉树218 6.5 Sequential Tree Implementations 树的顺序表示法219 6.6 Further Reading 深入学习导读223 6.7 Exercises 习题223 6.8 Projects 项目设计226
Part III Sorting and Searching 排序与检索 Chapter 7 Internal Sorting 内排序231 7.1 Sorting Terminology and Notation 排序术语232 7.2 Three Θ(n2) Sor
以下为对购买帮助不大的评价