As mentioned above, this book is intended primarily as a textbook for a Freshman-Sophomore Data Structures (CS2) course using C++ as its implementation language. This book contains many C++-code and pseudo-code fragments, and over 500 exercises (with roughly 200 having solutions that are posted at the instructor's area of the web site), which are divided with roughly 40% being reinforcement exercises, 40% being creativity exercises, and 20% being projects. The code fragments have all been successfully compiled and tested on major C++ compilers including GNU g++, Borland C++-Builder, and Microsoft Visual C++.

This book is also structured to allow the instructor a great deal of freedom in how to organize and present the material. For example, we include optional material, that is somewhat mathematically more advanced, in several chapters. Such optional sections are indicated with a star (*). In the table below, we illustrate possible options for this book in a CS2 course.

Chapter |
Possible Options |
---|---|

1. C++ Programming | skip if students know it already |

2. Object-Oriented Design | skip if students know it already |

3. Analysis Techniques | omit justification methods |

4. Stacks, Queues & Recursion | provide alternate case study |

5. Vectors, Lists, and Sequences | omit amortized analysis |

6. Trees | omit general trees |

7. Priority Queues | omit bottom-up heap construction, locators |

8. Dictionaries | omit skip lists, locators |

9. Search Trees | omit (2,4) and red-black trees |

10. Sorting, Sets, and Selection | omit sorting lower bound |

11. Text Processing | omit tries, compression, & LCS |

12. Graphs | omit directed graphs |