本书最大的特点是,首先定义了抽象数据类型(ADT),然后在此基础上介绍了数据结构的各种概念和知识。这样,读者的注意力不是放在数据结构内部的具体实现,而是集中于其外在功能接口与特性,使读者可以在较短的时间内学会如何使用Java语言本身提供的数据结构。
本书的示例都只给出关键的语句而忽略细节部分,其源代码可以从http://web.engr.oregonstate.edu/~budd/books/jds/下载,这不仅使得本书的结构紧凑、可读性强,而且可以避免读者对本书的依赖,养成独立思考、勤于动手的习惯,有利于读者对数据结构知识的理解和掌握。
本书可以作为大中专院校的数据结构教学用书。
PREFACE XV
1 THE MANAGEMENT OF COMPLEXITY
1.1 The Control of Complexity
1.2 Abstraction, Information Hiding, and Layering
1.3 Division into Parts
1.4 Composition
1.5 Layers of Specialization
1.6 Multiple Views
1.7 Patterns
1.8 Chapter Summary
Further Information
Study Questions
Exercises
Programming Projects
2 ABSTRACT DATA TYPES
2.1 What Is a Type?
2.2 Abstract Data Types
2.3 The Fundamental ADTs
2.4 Chapter Summary
Further Information
Study Questions
Exercises
Programming Projects
3 ALGORITHMS
3.1 Characteristics of Algorithms
3.2 Recipes as Algorithms
3.3 Analyzing Computer Algorithms
3.4 Recursive Algorithms
3.5 Chapter Summary
Further Information
Study Questions
Exercises
Programming Projects
4 EXECUTION-TIME MEASUREMENT
4.1 Algorithmic Analysis and Big-Oh Notation
4.2 Execution Time of Programming Constructs
4.3 Summing Algorithmic Execution Times
4.4 The Importance of Fast Algorithms
4.5 Benchmarking Execution Times
4.6 Chapter Summary
Further Information
Study Questions
Exercises
Programming Projects
5 INCREASING CONFIDENCE IN CORRECTNESS
5.1 Program Proofs
5.2 Program Testing
5.3 Chapter Summary
Further Information
Study Questions
Exercises
Programming Projects
6 VECTORS
6.1 The Vector Data Structure
6.2 Enumeration
6.3 Application-Silly Sentences
6.4 Application-Memory Game
6.5 Application-Shell Sort
6.6 A Visual Vector
6.7 Chapter Summary
Further Information
Study Questions
Exercises
Programming Projects
7 SORTING VECTORS
7.1 Divide and Conquer
7.2 SortedVectors
7.3 Merge Sort
7.4 Partitioning
7.5 Chapter Summary
Further Information
Study Questions
Exercises
Programming Projects
8 LINKED LISTS
8.1 Varieties of Linked Lists
8.2 LISP-Style Lists
8.3 The LinkedList Abstraction
8.4 Application-Asteroids Game
8.5 Application-Infinite-Precision Integers
8.6 Chapter Summary
Further Information
Study Questions
Exercises
Programming Projects
9 LIST VARIATIONS
……
10 STACKS
11 DEQUES
12. QuEuEs
13 TREES
14 BINARY SEARCH TREES
15 PRIORITY QUEUES
16 HASH TABLES
17 MAPS
18 SETS
19 MATRICES
20 GRAPHS
APPENDIX A JAVA SYNTAX
APPENDIX B IMPORT LIBRARIES
APPENDIX C DATA STRUCTURES IN THE JAVA STANDARD LIBRARY
BIBLIOGRAPHY
INDEX