REVIEW - Data Structures, Algorithms, and Object-Oriented Programming

Title:

Data Structures, Algorithms, and Object-Oriented Programming

Author:

Gregory L. Heileman

ISBN:

007114322

Publisher:

McGraw-Hill Science, Engineering & Mathematics (1996)

Pages:

446pp

Reviewer:

Francis Glassborow

Reviewed:

February 2000

Rating:

★★☆☆☆

I am not going to write very much about this book because I believe that it falls between two stools. It could have been a purely theoretical text on the subject, or it could have been about the subject in the context of C++.

In the latter case I would expect at least substantial awareness of the Standard Template Library. I can find no evidence that the author is aware of the facilities provided by C++. To my mind he compounds this by devoting chapters to OO in straight C. While I know you can use OO and code it in C, I would not advocate it. If OO is what you are doing, then choose a language that has direct support for it.

On the other hand, if the author is mainly concerned with the theoretical basis for OO programming of algorithms and data structures I would have been happier with a different choice of language (or perhaps the use of pseudo code).

There are a lot of weaknesses in the author's understanding of C++. For example on page 200 he provides a definition (not declaration, despite the caption) of his class BST (binary search tree) which inherits privately and virtually from a base class. It has long been known that any form of virtual inheritance other than public is a pure illusion and completely pointless. Another issue that arises here is that the use of a virtual base class (along with protected member functions) means that the class is intended to be used as a base class, so why are there no virtual member functions? More specifically, why is there no virtual destructor? Anyone with sufficient knowledge of C++ to correctly implement data structures in C++ would know how important this issue is.

Exceptions is one of the major issues with algorithms and data structures implemented in C++. The author nowhere mentions the subject of exceptions (nor does he refer to namespaces though he makes extensive use of templates).

If you want to study the subject specifically in terms of C++ you would probably be much better off studying Matt Austern's Generic Programming and the STL , if you want to study the theoretical foundations of the subject I think you will find other books that focus on the topic. I would be happy to publish readers' choices for such a book.


Book cover image courtesy of Open Library.