Data Structures and Algorithms in C++
2nd Edition
Michael T. Goodrich, Roberto Tamassia, and David M. Mount

bdbs commerce | beta


Softcover: 744 pages
Publisher: Wiley; Edition 2 (February 22, 2011)
Language: English
ISBN-10: 0470383275
ISBN-13: 978-0470383278
Physical Trim: 9.1 x 7.5 x 1.2 inches

Data Structures and Algorithms in C++, 2nd Edition
Michael T. Goodrich, Roberto Tamassia, and David M. Mount

bdbs commerce | beta


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. "Building on the success of Data Structures and Algorithms in Java, 2/e, Goodrich and Tamassia, together with C++ authority David Mount, bring you a new text covering data structures in C++. With this book, you will find a true C++ text, rather than a book translated from Java. Both the programming code and the appropriate concepts have been rewritten."

Provides a comprehensive introduction to data structures and algorithms, including their design, analysis, and implementation. The unparalleled author team incorporates the object-oriented design paradigm using C++ as the implementation language, while also providing intuition and analysis of fundamental algorithms. Each data structure is presented using ADTs and their respective implementations. Helps provide an understanding of the wide spectrum of skills ranging from sound algorithm and data structure design to efficient implementation and coding of these designs in C++.

"Data Structures and Algorithms in C++ helps you develop a wide spectrum of valuable skills, ranging from sound algorithm and data structure design, to effective application of analysis techniques, to clean and efficient implementation and coding of design in C++. The authors' highly visual, applied approach and extensive suite of Web-based learning tools give you the opportunity to see visual justifications of key analytic concepts, learn about the most recent advances in the field, and actually do program design using data structures."

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).


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.

New to the second edition

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.

About the Authors

Michael T. Goodrich is a mathematician and computer scientist. He is a Fellow of the American Association for the Advancement of Science, a Fellow of the Institute of Electrical and Electronics Engineers, and a Fellow of the Association for Computing Machinery. He is also a member of the editorial boards of several top journals on algorithms.

Roberto Tamassia is a computer scientist whose research specialty is in the design and analysis of algorithms for graph drawing, computational geometry, and computer security; he is the author of several textbooks.

David M. Mount He is a computer scientist who has written over 140 research publications on algorithms for geometric problems, particularly problems with applications in image processing, pattern recognition, information retrieval, and computer graphics.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam placerat, velit at volutpat vestibulum, est mauris interdum nisi, ut lobortis mauris nunc vel elit. Praesent vel massa elit. In et dui odio. Aenean pharetra augue eget arcu eleifend laoreet. Nulla vel neque sed arcu rhoncus pharetra. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce tortor est, faucibus a suscipit eu, accumsan eget dolor. Aliquam nibh metus, lacinia sit amet feugiat non, gravida nec velit. Quisque accumsan enim eget odio pellentesque tempus. Vestibulum dictum iaculis velit sit amet feugiat.

Phasellus in massa vel ante fermentum venenatis ut nec dui. Proin mollis fermentum blandit. Ut dignissim aliquam neque, eu hendrerit justo bibendum in. Nulla at est vitae quam placerat sagittis et at orci. Aliquam quis urna eget nibh sodales vulputate. Sed hendrerit mattis viverra. Fusce metus est, mattis at mollis nec, mollis vel justo. Nam egestas ultrices tortor, a pellentesque nunc lacinia sit amet. Vestibulum non sapien neque. Nulla blandit felis quis augue viverra faucibus ac non mauris.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras sodales leo vitae nibh cursus ullamcorper. Sed gravida mauris ac nisi posuere vel tempus sem mattis. Quisque vitae sem arcu, ac hendrerit lacus. Donec pharetra ipsum ac velit feugiat commodo. Suspendisse condimentum vehicula justo et tincidunt. Praesent iaculis venenatis elit, nec suscipit tortor rutrum in. Curabitur augue neque, elementum eu fermentum et, ullamcorper mollis risus. Ut cursus vestibulum blandit. Donec cursus porta libero, a fringilla turpis egestas ut. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Vivamus orci sapien, pretium ac tincidunt vitae, vestibulum eu enim. Cras congue nisi quis quam consectetur consequat sed ut neque. Mauris id diam lacus, sed gravida quam. Fusce a pretium quam. Duis gravida aliquam cursus. Nam vel elementum metus. Phasellus dapibus, arcu id egestas eleifend, urna ante sagittis leo, ut consectetur nisi justo cursus nibh. Aliquam porttitor, lectus nec placerat sollicitudin, mi magna pellentesque sem, quis porttitor urna risus quis metus. Proin dignissim sollicitudin leo, nec fringilla tellus volutpat a. Curabitur velit ante, molestie et facilisis in, tincidunt sit amet sapien. Sed at odio risus, in blandit est. Phasellus tempus, ante sed venenatis suscipit, diam velit vehicula turpis, in placerat lectus tortor non turpis. Fusce a dolor non diam egestas feugiat sed et nisi. Sed ullamcorper elit ac nibh semper vel vestibulum nunc ultrices. Integer varius mi id dolor malesuada vitae ullamcorper libero varius. Duis et orci eros. Maecenas nibh urna, faucibus quis luctus nec, fringilla in nulla. Pellentesque vel massa ligula, sed convallis elit. Proin sapien urna, suscipit ac fringilla hendrerit, vulputate id odio. Phasellus dignissim convallis neque, id lobortis libero vehicula vitae.

Integer urna dolor, semper nec mattis a, suscipit in diam. Nulla tempor enim nisl, ut mollis nisl. Nulla sit amet metus ut enim consequat fermentum. Mauris sed felis urna. Mauris ac nibh lectus, nec lobortis leo. Suspendisse potenti. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Praesent molestie pretium dolor, vel consequat odio varius sit amet. Vestibulum scelerisque feugiat neque, nec sollicitudin turpis faucibus a. Donec eget neque ut purus lobortis congue. Fusce eleifend convallis ipsum, at laoreet dolor dictum ac. Maecenas sed nunc risus. Morbi porta ligula varius leo volutpat sit amet porttitor quam eleifend. Ut iaculis blandit tincidunt. Nullam volutpat, magna at sodales ornare, ligula odio semper neque, adipiscing rhoncus felis leo quis ipsum. Quisque leo orci, ultricies sed lacinia et, volutpat a metus. Aliquam facilisis dapibus lorem, ut scelerisque felis aliquam vitae.

Praesent ligula diam, adipiscing ac congue et, aliquam quis justo. Mauris elementum massa sed libero fermentum vulputate. Ut ligula velit, tincidunt nec scelerisque ac, tincidunt in metus. Vivamus rhoncus nibh ut orci blandit eu varius mi tincidunt. Nulla facilisi. Nunc cursus est in libero rhoncus tincidunt varius enim luctus. Praesent at est mauris. Mauris venenatis dapibus turpis, ut aliquet quam laoreet sit amet. Praesent volutpat, dolor sit amet interdum vulputate, nulla urna pellentesque leo, aliquam accumsan tellus arcu eu leo. Vivamus eget dolor sed sem fringilla rutrum sit amet at augue. Donec hendrerit ipsum vel eros placerat nec dictum ligula dignissim. Vestibulum euismod aliquet tristique. Nam nec mi et elit lobortis interdum. Nulla facilisi. Integer a urna dolor, id suscipit augue. Nullam scelerisque porta lectus, sit amet pellentesque massa tristique et. Donec gravida tincidunt diam vitae tincidunt. Quisque ac turpis sit amet dui consequat ultrices. Maecenas rutrum rutrum magna ut bibendum.

Sed nisl felis, semper eu dapibus non, commodo vitae leo. Nulla at tellus et ligula faucibus adipiscing. Quisque vitae nunc vitae lectus varius porttitor. Duis ut lorem lorem, id mollis sapien. Proin ullamcorper diam id lacus dictum facilisis. Donec porttitor dolor ut mauris viverra rhoncus. Maecenas aliquam magna quis nisl faucibus quis congue nulla molestie. Praesent semper condimentum massa id sollicitudin. Donec mollis rhoncus sapien id molestie. Cras sagittis commodo suscipit. Nullam non nibh in leo aliquam facilisis. Fusce mollis ornare tristique. Donec ultricies condimentum imperdiet. Phasellus tincidunt diam quis elit pharetra laoreet.

Etiam sodales lacus accumsan metus aliquet volutpat ornare enim tempor. Curabitur ac venenatis nulla. Duis condimentum nibh vel sem vestibulum a euismod enim luctus. Duis id leo non dolor lobortis venenatis. Quisque a nulla dolor. Mauris pellentesque dignissim suscipit. Duis dictum tristique pellentesque. Aliquam ornare augue eu nulla rutrum et pretium nibh fermentum. Donec vitae nisi arcu. Proin volutpat urna at enim facilisis nec ornare diam rhoncus.

Integer porttitor, augue non volutpat feugiat, elit ante adipiscing quam, ut scelerisque erat augue quis nisl. In hac habitasse platea dictumst. Etiam sed magna sit amet sem fringilla condimentum. Aliquam in purus sit amet nunc venenatis varius vitae et libero. Fusce ut ornare mi. Quisque lacus mi, egestas eu volutpat ac, vehicula id risus. Mauris venenatis suscipit lacus, et vehicula libero rutrum sit amet. Sed at nibh nisl. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin elit quam, aliquam quis faucibus nec, egestas eget nisl. Vivamus libero arcu, vulputate ut porttitor scelerisque, lacinia auctor turpis. Maecenas id mi et nibh scelerisque molestie. Phasellus ornare, justo eu porta lobortis, sem arcu congue justo, vel pulvinar urna felis ut nisi. Morbi sapien nibh, aliquam a placerat quis, euismod vel risus. Etiam imperdiet varius metus a aliquet. Nullam eget mi vel turpis convallis consequat. Quisque ornare, neque in gravida dignissim, turpis risus dapibus elit, in ultricies ipsum arcu eu nisl. Fusce elementum elit eu lacus euismod eget laoreet metus fermentum. Ut ac felis in urna pellentesque luctus. Nulla odio elit, cursus vitae imperdiet non, pretium vitae felis. Curabitur facilisis, diam sed scelerisque consequat, eros elit faucibus purus, ut vulputate magna ligula vel mi.

Nulla dapibus ornare nisi, et dignissim risus tincidunt nec, etc...