注册 登录 进入教材巡展
#
  • #

出版时间:2013年1月

出版社:电子工业出版社

以下为《数据结构与算法分析(C++版)(第三版)(英文版)》的配套数字资源,这些资源在您购买图书后将免费附送给您:
  • 电子工业出版社
  • 9787121192609
  • 1-1
  • 160482
  • 0047151189-9
  • 平装
  • 16开
  • 2013年1月
  • 1273
  • 612
  • 工学
  • 软件工程
  • TP311.12
  • 专业基础课
  • 本科
内容简介


  本书采用程序员*用的面向对象C++语言来描述数据结构和算法,并把数据结构原理和算法分析技术有机地结合在一起,系统介绍了各种类型的数据结构和排序、检索的各种方法。作者非常注意对每一种数据结构的不同存储方法及有关算法进行分析比较。书中还引入了一些比较高级的数据结构与先进的算法分析技术,并介绍了可计算性理论的一般知识。本版的重要改进在于引入了参数化的模板,从而提高了算法中数据类型的通用性,支持高效的代码重用。

目录

Preface


Part Ⅰ Preliminaries


  Chapter 1 Data Structures and Algorithms


    1.1 A Philosophy of Data Structures


    1.1.1 The Need for Data Structures


    1.1.2 Costs and Benefits


    1.2 Abstract Data Types and Data Structures


    1.3 Design Patterns


    1.3.1 Flyweight


    1.3.2 Visitor


    1.3.3 Composite


    1.3.4 Strategy


    1.4 Problems, Algorithms, and Programs


    1.5 Further Reading


    1.6 Exercises


  Chapter 2 Mathematical Preliminaries


    2.1 Sets and Relations


    2.2 Miscellaneous Notation


    2.3 Logarithms


    2.4 Summations and Recurrences


    2.5 Recursion


    2.6 Mathematical Proof Techniques


    2.6.1 Direct Proof


    2.6.2 Proof by Contradiction


    2.6.3 Proof by Mathematical Induction


    2.7 Estimation


    2.8 Further Reading


    2.9 Exercises


  Chapter 3 Algorithm Analysis


    3.1 Introduction


    3.2 Best, Worst, and Average Cases


    3.3 A Faster Computer, or a Faster Algorithm?


    3.4 Asymptotic Analysis


    3.4.1 Upper Bounds


    3.4.2 Lower Bounds


    3.4.3   Notation


    3.4.4 Simplifying Rules


    3.4.5 Classifying Functions


    3.5 Calculating the Running Time for a Program


    3.6 Analyzing Problems


    3.7 Common Misunderstandings


    3.8 Multiple Parameters


    3.9 Space Bounds


    3.10 Speeding Up Your Programs


    3.11 Empirical Analysis


    3.12 Further Reading


    3.13 Exercises


    3.14 Projects


Part Ⅱ Fundamental Data Structures


  Chapter 4 Lists, Stacks, and Queues


    4.1 Lists


    4.1.1 Array-Based List Implementation


    4.1.2 Linked Lists


    4.1.3 Comparison of List Implementations


    4.1.4 Element Implementations


    4.1.5 Doubly Linked Lists


    4.2 Stacks


    4.2.1 Array-Based Stacks


    4.2.2 Linked Stacks


    4.2.3 Comparison of Array-Based and Linked Stacks


    4.2.4 Implementing Recursion


    4.3 Queues


    4.3.1 Array-Based Queues


    4.3.2 Linked Queues


    4.3.3 Comparison of Array-Based and Linked Queues


    4.4 Dictionaries


    4.5 Further Reading


    4.6 Exercises


    4.7 Projects


  Chapter 5 Binary Trees


    5.1 Definitions and Properties


    5.1.1 The Full Binary Tree Theorem


    5.1.2 A Binary Tree Node ADT


    5.2 Binary Tree Traversals


    5.3 Binary Tree Node Implementations


    5.3.1 Pointer-Based Node Implementations


    5.3.2 Space Requirements


    5.3.3 Array Implementation for Complete Binary Trees


    5.4 Binary Search Trees


    5.5 Heaps and Priority Queues


    5.6 Huffman Coding Trees


    5.6.1 Building Huffman Coding Trees


    5.6.2 Assigning and Using Huffman Codes


    5.6.3 Search in Huffman Trees


    5.7 Further Reading


    5.8 Exercises


    5.9 Projects


  Chapter 6 Non-Binary Trees


    6.1 General Tree Definitions and Terminology


    6.1.1 An ADT for General Tree Nodes


    6.1.2 General Tree Traversals


    6.2 The Parent Pointer Implementation


    6.3 General Tree Implementations


    6.3.1 List of Children


    6.3.2 The Left-Child/Right-Sibling Implementation


    6.3.3 Dynamic Node Implementations


    6.3.4 Dynamic “Left-Child/Right-Sibling” Implementation


    6.4 K-ary Trees


    6.5 Sequential Tree Implementations


    6.6 Further Reading


    6.7 Exercises


    6.8 Projects


Part Ⅲ Sorting and Searching


  Chapter 7 Internal Sorting


    7.1 Sorting Terminology and Notation


    7.2 Three  (n2) Sorting Algorithms


    7.2.1 Insertion Sort


    7.2.2 Bubble Sort


    7.2.3 Selection Sort


    7.2.4 The Cost of Exchange Sorting


    7.3 Shellsort


    7.4 Mergesort


    7.5 Quicksort


    7.6 Heapsort


    7.7 Binsort and Radix Sort


    7.8 An Empirical Comparison of Sorting Algorithms


    7.9 Lower Bounds for Sorting


    7.10 Further Reading


    7.11 Exercises


    7.12 Projects


  Chapter 8 File Processing and External Sorting


    8.1 Primary versus Secondary Storage


    8.2 Disk Drives


    8.2.1 Disk Drive Architecture


    8.2.2 Disk Access Costs


    8.3 Buffers and Buffer Pools


    8.4 The Programmer’s View of Files


    8.5 External