Skip to main content

Data Structures and Algorithms in C++, 2nd Edition

Data Structures and Algorithms in C++, 2nd Edition

Michael T. Goodrich, Roberto Tamassia, David M. Mount

ISBN: 978-0-470-46044-3

Feb 2011

744 pages



This second edition of Data Structures and Algorithms in C++ is designed to provide an introduction to data structures and algorithms, including their design, analysis, and implementation. The authors offer an introduction to object-oriented design with C++ and design patterns, including the use of class inheritance and generic programming through class and function templates, and retain a consistent object-oriented viewpoint throughout the book.

This is a “sister” book to Goodrich & Tamassia’s Data Structures and Algorithms in Java, but uses C++ as the basis language instead of Java. This C++ version retains the same pedagogical approach and general structure as the Java version so schools that teach data structures in both C++ and Java can share the same core syllabus.

In terms of curricula based on the IEEE/ACM 2001 Computing Curriculum, this book is appropriate for use in the courses CS102 (I/O/B versions), CS103 (I/O/B versions), CS111 (A version), and CS112 (A/I/O/F/H versions).

Related Resources

Chapter 1 - Basic C++ Programming.
Chapter 2 - Object-Oriented Design.
Chapter 3 - Analysis Tools.
Chapter 4 - Stacks, Queues, and Recursion.
Chapter 5 - Vectors, Lists, and Sequences.
Chapter 6 - Trees.
Chapter 7 - Priority Queues.
Chapter 8 - Dictionaries.
Chapter 9 - Search Trees.
Chapter 10 - Sorting, Sets, and Selection.
Chapter 11 - Text Processing.
Chapter 12 - Graphs.
Appendix: Useful Mathematical Facts.
  • Enhanced consistency with the C++ Standard Template Library (STL), and expanded usage of STL data structures as a basis for designing more complex data structures.
  • Improved consistency with modern C++ coding standards in presenting code fragments.
  • Simplification of many of the code fragments, focusing on the principal structure and functionality of the data structures.
  • More examples and discussion of data structure and algorithm analysis.
  • Enhanced the discussion of algorithmic design techniques, like dynamic programming and the greedy method.
  • Consistent object-oriented viewpoint throughout the book.
  • Detailed explanation and visualization of sorting algorithms.
  • Coverage of graph algorithms and pattern-matching algorithms for more advanced CS2 courses.
  • Visual justifications (that is, picture proofs), which make mathematical arguments more understandable for students, appealing to visual learners.
  • Motivation of algorithmic concepts with Internet-related applications, such as Web browsers and search engines.
  • Accompanying web site with a special password-protected area for instructors.