Strengthen your understanding of data structures and their algorithms for the foundation you need to successfully design, implement and maintain virtually any software system. Theoretical, yet practical, DATA STRUCUTRES AND ALGORITHMS IN C++, 4E by experienced author Adam Drosdek highlights the fundamental connection between data structures and their algorithms, giving equal weight to the practical implementation of data structures and the theoretical analysis of algorithms and their efficiency. This edition provides critical new coverage of treaps, k-d trees and k-d B-trees, generational garbage collection, and other advanced topics such as sorting methods and a new hashing technique. Abundant C++ code examples and a variety of case studies provide valuable insights into data structures implementation. DATA STRUCTURES AND ALGORITHMS IN C++ provides the balance of theory and practice to prepare readers for a variety of applications in a modern, object-oriented paradigm.
Author(s): Adam Drozdek
Edition: 4
Publisher: Cengage Learning
Year: 2012
Language: English
Pages: 784
Contents
Preface
Ch 1: Object-Oriented Programming Using C++
1.1 Abstract Data Types
1.2 Encapsulation
1.3 Inheritance
1.4 Pointers
1.5 Polymorphism
1.6 C++ and Object-Oriented Programming
1.7 The Standard Template Library
1.8 Vectors in the Standard Template Library
1.9 Data Structures and Object-Oriented Programming
1.10 Case Study: Random Access File
1.11 Exercises
1.12 Programming Assignments
Bibliography
Ch 2: Complexity Analysis
2.1 Computational and Asymptotic Complexity
2.2 Big-O Notation
2.3 Properties of Big-O Notation
2.4 Ω and Θ Notations
2.5 Possible Problems
2.6 Examples of Complexities
2.7 Finding Asymptotic Complexity: Examples
2.8 The Best, Average, and Worst Cases
2.9 Amortized Complexity
2.10 NP-Completeness
2.11 Exercises
Bibliography
Ch 3: Linked Lists
3.1 Singly Linked Lists
3.2 Doubly Linked Lists
3.3 Circular Lists
3.4 Skip Lists
3.5 Self-Organizing Lists
3.6 Sparse Tables
3.7 Lists in the Standard Template Library
3.8 Concluding Remarks
3.9 Case Study: A Library
3.10 Exercises
3.11 Programming Assignments
Bibliography
Ch 4: Stacks and Queues
4.1 Stacks
4.2 Queues
4.3 Priority Queues
4.4 Stacks in the Standard Template Library
4.5 Queues in the Standard Template Library
4.6 Priority Queues in the Standard Template Library
4.7 Deques in the Standard Template Library
4.8 Case Study: Exiting a Maze
4.9 Exercises
4.10 Programming Assignments
Bibliography
Ch 5: Recursion
5.1 Recursive Definitions
5.2 Function Calls and Recursion Implementation
5.3 Anatomy of a Recursive Call
5.4 Tail Recursion
5.5 Nontail Recursion
5.6 Indirect Recursion
5.7 Nested Recursion
5.8 Excessive Recursion
5.9 Backtracking
5.10 Concluding Remarks
5.11 Case Study: A Recursive Descent Interpreter
5.12 Exercises
5.13 Programming Assignments
Bibliography
Ch 6: Binary Trees
6.1 Trees, Binary Trees, and Binary Search Trees
6.2 Implementing Binary Trees
6.3 Searching a Binary Search Tree
6.4 Tree Traversal
6.5 Insertion
6.6 Deletion
6.7 Balancing a Tree
6.8 Self-Adjusting Trees
6.9 Heaps
6.10 Treaps
6.11 K-d Trees
6.12 Polish Notation and Expression Trees
6.13 Case Study: Computing Word Frequencies
6.14 Exercises
6.15 Programming Assignments
Bibliography
Ch 7: Multiway Trees
7.1 The Family of B-Trees
7.2 Tries
7.3 Concluding Remarks
7.4 Case Study: Spell Checker
7.5 Exercises
7.6 Programming Assignments
Bibliography
Ch 8: Graphs
8.1 Graph Representation
8.2 Graph Traversals
8.3 Shortest Paths
8.4 Cycle Detection
8.5 Spanning Trees
8.6 Connectivity
8.7 Topological Sort
8.8 Networks
8.9 Matching
8.10 Eulerian and Hamiltonian Graphs
8.11 Graph Coloring
8.12 NP-Complete Problems in Graph Theory
8.13 Case Study: Distinct Representatives
8.14 Exercises
8.15 Programming Assignments
Bibliography
Ch 9: Sorting
9.1 Elementary Sorting Algorithms
9.2 Decision Trees
9.3 Efficient Sorting Algorithms
9.4 Sorting in the Standard Template Library
9.5 Concluding Remarks
9.6 Case Study: Adding Polynomials
9.7 Exercises
9.8 Programming Assignments
Bibliography
Ch 10: Hashing
10.1 Hash Functions
10.2 Collision Resolution
10.3 Deletion
10.4 Perfect Hash Functions
10.5 Rehashing
10.6 Hash Functions for Extendible Files
10.7 Case Study: Hashing with Buckets
10.8 Exercises
10.9 Programming Assignments
Bibliography
Ch 11: Data Compression
11.1 Conditions for Data Compression
11.2 Huffman Coding
11.3 Run-Length Encoding
11.4 Ziv-Lempel Code
11.5 Case Study: Huffman Method with Run-Length Encoding
11.6 Exercises
11.7 Programming Assignments
Bibliography
Ch 12: Memory Management
12.1 The Sequential-Fit Methods
12.2 The Nonsequential-Fit Methods
12.3 Garbage Collection
12.4 Concluding Remarks
12.5 Case Study: An In-Place Garbage Collector
12.6 Exercises
12.7 Programming Assignments
Bibliography
Ch 13: String Matching
13.1 Exact String Matching
13.2 Approximate String Matching
13.3 Case Study: Longest Common Substring
13.4 Exercises
13.5 Programming Assignments
Bibliography
Appendixes
Appendix A: Computing Big-O
Appendix B: Algorithms in the Standard Template Library
Appendix C: NP-Completeness
Index