本书是Ford和Topp两教授1996年所著“Data Structures with C++”的第2版,但在本书中应用了STL(标准模板库)。STL是ANSI C++1998中正式规定的,对常用的数据结构都进行了规范化并纳入其中。程序设计人员可以直接使用进行数据设计。本书的主要特点是:1.在全书中使用了STL容器类;2.对于每一容器类都提供了应用程序界面(API),可直接用于解决问题;3.作为现代数据结构核心的游标类,书中都进行了只管而精细的介绍;4.书中以同样细腻的风格介绍了诸如红黑树、散列表、堆、图等更为复杂的数据结构;5.作为数据结构的应用,作者提供了许多有关递归和继承的开发经验;6.每章都有学习目标和小结,许多完整的程序都给出运行结果,还提供了事例学习和复习题,每章的练习都给出了解答,还有大量的程序设计练习和程序设计项目实验。\r\n 本书不仅可用作计算机专业本科生和研究生的教材,也可作为计算机专业人员自学数据结构的参考书。
Preface\r\n\r\n1 Introduction to Data Structures\r\n\r\n1-1 WHAT IS THIS BOOK ABOUT?\r\n1-2 ABSTRACTVIEW OF DATA STRUCTURES\r\n1-3 AN ADT AS A CLASS\r\n1-4 IMPLEMENTING C++ CLASSES\r\n1-5 DECLARING AND USING OBJECTS\r\n1-6 IMPLEMENTING A CLASS WITH INLINE CODE\r\n1-7 APPLICATION PROGRAMMING INTERFACE(API)\r\n1-8 STRINGS\r\n\r\n2 Object Design Techniques\r\n\r\n2-1 SOFTWARE DESING\r\n2-2 HANDLING RUNTIME ERRORS\r\n2-3 OBJECT COMPOSITION\r\n2-4 OPERATOR OVERLOADING\r\n\r\n3 Intrduction to Algorithms\r\n\r\n3-1 SELECTION SORT\r\n3-2 SIMPLE SEARCH ALGORITHMS\r\n3-3 ANALYSIS OF ALGORITHMS\r\n3-4 ANALYZING THE SEARCH ALGORITHMS\r\n3-5 MAKING ALGORITHMS GENERIC\r\n3-6 THE CONCEPT OF RECURSION\r\n3-7 PROBLEM SOLVING WITH RECURSION\r\n\r\n4 The Vector Container\r\n\r\n4-1 OVERVIEW OF STL CONTAINER CLASSES\r\n4-2 TEMPLATE CLASSES\r\n4-3 THE VECTOR CLASS\r\n4-4 VECTOR APPLICATIONS\r\n\r\n5 Pointers and Dynamic Memory\r\n\r\n5-1 C++ POINTERS\r\n5-2 DYNAMIC MEMORY\r\n5-3 CLASSES USING DYNAMIC MEMORY\r\n5-4 ASSINGEMNT AND INITIALIZATION\r\n5-5 THE MINI VECTOR CLASS\r\n5-6 THE MATRIX CLASS\r\n\r\n6 The List Container and Iterators\r\n\r\n6-1 THE LIST CONTAINER\r\n6-2 ITERATORS\r\n6-3 GENERAL LIST INSERT AND DRASE OPERATIONS\r\n6-4 CASE STUDY:GRADUATION LISTS\r\n\r\n7 Stacks\r\n\r\n7-1 THE STACK ADT\r\n7-2 RECURSIVE CODE AND THE RUNTIME STACK\r\n7-3 STACK IMPLEMENTION\r\n7-4 POSTFIX EXPRESSIONS\r\n7-5 CASE STUDY:INFIX EXPRESSION EVALUATION\r\n\r\n8 Queues and Priority Queues\r\n\r\n8-1 THE QUEUE ADT\r\n8-2 THE RADIX SORT\r\n8-3 IMPLEMENTING THE MINI QUEUE CLASS\r\n8-4 CASE STUDY:TIME-DRIVEN SIMULATION\r\n8-5 ARRAY-BASED QUEUE IMPLEMENTATION\r\n8-6 PRIORITY QUEUES\r\n\r\n9 Linked Lists\r\n\r\n9-1 LINKED LIST NODES\r\n9-2 BUILDING LINKED LISTS\r\n9-3 HANDLING THE BACK OF THE LIST\r\n9-4 IMPLEMENTING A LINKED QUEUE\r\n9-5 DOUBLY LINKED LISTS\r\n9-6 UPDATING A DOUBLY LINKED LSIT\r\n9-7 THE JOSEPHUS PROBLEM\r\n9-8 THE MINI LIST CLASS\r\n9-9 SELECTING A SEQUENCE CONTAINER\r\n\r\n10 Binary Trees\r\n\r\n10-1 TREE STRUCTURES\r\n10-2 BINARY TREE NODES\r\n10-3 BINARY TREE SCAN ALGORITHMS\r\n10-4 USING TREE SCAN ALGORITHMS\r\n10-5 BINARY SEARCH TREES\r\n10-6 USING BINARY SEARCHTREES\r\n10-7 MIPLEMENTING THE stree CLASS\r\n10-8 THE STREE ITERATOR(Optional)\r\n\r\n11 Associative Containers\r\n\r\n11-1 OVERVIEW OF ASSOCIATIVE CONTAINERS\r\n11-2 SETS\r\n11-3 MAPS\r\n11-4 MULTISETS\r\n11-5 IMPLEMENTING SETS AND MAPS\r\n\r\n12 Advanced Associative Structures\r\n\r\n12-1 HASHING\r\n12-2 DESIGNING HASH FUNCTIONS\r\n12-3 DESINGING HASH TABLES\r\n12-4 THE HASH CLASS\r\n12-5 HASH TABLE PERFORMANCE\r\n12-6 2-3-4TREES\r\n12-7 RED-BLACK TREES\r\n12-8 THE RBTREE CLASS\r\n\r\n13 Inheritance and Abstract Classes\r\n\r\n13-1 INHERITANCE IN C++\r\n13-2 THE GRAPHICS HIERARCHY\r\n13-3 THE GRAPHICS SYSTEM\r\n13-4 SAFE VECTORS\r\n13-5 ORDERED LISTS\r\n13-6 POLYMORPHISM AND VIRTUAL FUNCTIONS\r\n13-7 ABSTRACT CLASSES\r\n\r\n14 Heaps Binary Files and Bit Sets\r\n\r\n14-1 ARRAY-BASED BINARY TREES\r\n14-2 HEAPS \r\n14-3 IMPLEMENTING A PRIORITY QUEUE\r\n14-4 BINARY FILES\r\n14-5 BITSETS\r\n14-6 CASE STUDY:HUFFMAN COMPRESSION\r\n\r\n15 Recursive Algorithms\r\n\r\n15-1 DIVIDE AND CONQUER ALGORITHMS\r\n15-2 COMBINATORICS\r\n15-3 DYNAMIC PROGRAMMING\r\n15-4 BACKTRACKING:THE Eight-QUEENS PROBLEM\r\n\r\n16 Graphs\r\n\r\n16-1 GRAPH TERMINOLOGY\r\n16-2 THE GRAPH CLASS\r\n16-3 GRAPH CLASS DESING\r\n16-4 GRAPH TRAVERSAL ALGORITHMS\r\n16-5 GRAPH TRAVERSAL APPLICATIONS\r\n16-6 GRAPH MINIMIZATION ALGORITHMS\r\n\r\nIndex