Overview
"The presentation is excellent, good writing style, supportive and well-placed illustrations; and a variety of exercises reinforcing the concepts."—Adair Dingle, Seattle University
"This is one of the very few books that I have seen that combines foundations of software engineering with an introduction to computer science in some detail and introduces topics that are only covered in advanced courses. It is very important that our students start to learn these fundamental issues as early as possible."—Mansour Zand, University of Nebraska
- Covers the data structures recommended in the ACM curriculum guidelines
- Problem-solving methodology is used consistently in examples and applications
- Incorporates an Object-Centered Design paradigm developed by the author that culminates in true object-oriented programming
- Includes coverage of containers and algorithms from C++'s standard library
- Advanced C++ features such as recursion, function and class templates, inheritance, and polymorphism are covered
C++: An Introduction to Data Structures is a superior learning tool that includes numerous examples, applications, exercise sets, programming projects, quick quizzes, programming pointers, and ADT tips. Supplements for an instructor teaching a data structures course include a solutions manual, PowerPoint lecture presentations, source code, electronic art files, companion Web site, and a lab manual.
Editorials
Booknews
A text for the Computer Science 2 course as described in the curriculum recommendations of the Association of Computing Machinery. Covers developing a disciplined approach to designing, coding, and testing programs written in a high-level language; using data abstractions as examples of data structures other than those normally provided as basic types in current programming languages; understanding the different implementations of the data structures; searching, sorting, and analyzing algorithms; and laying a foundation for further studies in computer science. Uses object-oriented programming, which has become the standard in programming and system development. Annotation c. by Book News, Inc., Portland, Or.Jack Woehr
A Return to Fundamentals
C++: An Introduction to Data Structures, by Larry Nyhoff, is an undergraduate course text on data structures and associated algorithms as expressed in the C++ language. It is modeled on curriculum recommendations of the ACM (http://www.acm.org/education/curricula.html) for CS2, and its view of C++ is based on the 1997 ANSI/ISO Draft. It is an extraordinary textbook forming an excellent introduction to the discipline of programming.
Writing textbooks is much harder than writing general computing books. While authors writing for general publication can cater to their own tastes, textbook authors must strive for both orthogonality and breadth, knowing the reader's exposure to the matters under discussion may be limited for years to those encountered in the textbook. At the same time, the presentation must make the topics memorable.
Nyhoff, of the Calvin College Department of computer science (Grand Rapids, Michigan), succeeds in satisfying these goals. The presentation is both rich and well targeted to undergraduates. It is written in a style surprisingly engaging even for the expert. This is the clearly one of the best volumes of its genre.
The book is about data structures in the classic sense: Nyhoff might have titled the book Algorithms + Data Structures = Programs if Niklaus Wirth hadn't already used the title in the 1960s. C++: An Introduction to Data Structures deals broadly with basic computational algorithms, examining in painstaking detail the data structures that empower the algorithms, from scalars to members of the Standard Template Library.
The elements of programming, the elements of structure, the elements of algorithms, and (hallelujah) the elements of proof of correctness are a few of the important, non-C++-specific topics covered in some depth. Deductive proof of a program's correctness seems to have gone out of fashion in these days of high-powered debuggers and automated test suites; not so, thankfully, in Nyhoff's universe of discourse.
The major sections of the book are:
- Software Engineering
- Introduction to Data Structures and Abstract Data Types--C-Style Types
- More About Data Structures and ADT--C++ Types
- Stacks
- Queues
- Improving ADTs--Part 1: Templates and Standard Containers
- Improving ADTs--Part 2: Recursion, Algorithm Analysis and Standard Algorithms
- Lists
- Other Linked Structures
- Binary Trees
- 1Sorting
- OOP and ADTs
- Trees
- Graphs and Digraphs
Nyhoff consistently has students learn how to solve a problem "by hand" in application code before demonstrating to them that the solution is already embodied in one or another standard library. Thus, different is the computer science approach from the weak habits inculcated by help files accompanying popular microcomputer compilers.
There is a very satisfying economy and thoroughness to the quizzes and exercises presented at the end of each section. A number of supplementary materials are described in the preface as "planned," including a lab manual and a web site (http://www.prenhall.com/nyhoff/) which, at last check, still displays the dreaded "under construction" logo.
If you are teaching an undergraduate introduction to computer programming and either have no specific preference as to programming languages, or actively desire to teach the course in well-stepped, rigorously standard C++, this book is for you.
— Dr. Dobb's Electronic Review of Computer Books