| |
| |
| |
The Phases of Software Development | |
| |
| |
| |
Specification, Design, Implementation | |
| |
| |
| |
Running Time Analysis | |
| |
| |
| |
Testing and Debugging | |
| |
| |
Chapter Summary | |
| |
| |
Solutions to Self-Test Exercises | |
| |
| |
| |
Abstract Data Types and C++ Classes | |
| |
| |
| |
Classes and Members | |
| |
| |
| |
Constructors | |
| |
| |
| |
Using a Namespace, Header File, and Implementation File | |
| |
| |
| |
Classes and Parameters | |
| |
| |
| |
Operator Overloading | |
| |
| |
Chapter Summary | |
| |
| |
Solutions to Self-Test Exercises | |
| |
| |
Programming Projects | |
| |
| |
| |
Container Classes | |
| |
| |
| |
The Bag Class | |
| |
| |
| |
Programming Project: The Sequence Class | |
| |
| |
| |
Interactive Test Programs | |
| |
| |
Chapter Summary | |
| |
| |
Solutions to Self-Test Exercises | |
| |
| |
Programming Projects | |
| |
| |
| |
Pointers and Dynamic Arrays | |
| |
| |
| |
Pointers and Dynamic Memory | |
| |
| |
| |
Pointers and Arrays as Parameters | |
| |
| |
| |
The Bag Class with a Dynamic Array | |
| |
| |
| |
Prescription for a Dynamic Class | |
| |
| |
| |
Programming Project: The String Class | |
| |
| |
| |
Programming Project: The Polynomial | |
| |
| |
Chapter Summary | |
| |
| |
Solutions to Self-Test Exercises | |
| |
| |
Programming Projects | |
| |
| |
| |
Linked Lists | |
| |
| |
| |
A Fundamental Node Class for Linked Lists | |
| |
| |
| |
A Linked List Toolkit | |
| |
| |
| |
The Bag Class with a Linked List | |
| |
| |
| |
Programming Project: The Sequence Class with a Linked List | |
| |
| |
| |
Dynamic Arrays vs Linked Lists vs. Doubly Linked Lists | |
| |
| |
Chapter Summary | |
| |
| |
Solutions to Self-Test Exercises | |
| |
| |
Programming Projects | |
| |
| |
| |
Software Development with Templates, Iterators, and the Standard Library | |
| |
| |
| |
Template Functions | |
| |
| |
| |
Template Classes | |
| |
| |
| |
Standard Template Classes and Their Iterators | |
| |
| |
| |
The Node Template Class | |
| |
| |
| |
An Iterator for Linked Lists | |
| |
| |
| |
Linked List Version of the Bag Template Class with an Iterator | |
| |
| |
Chapter Summary and Summary of the Five Bags | |
| |
| |
Solutions to Self-Test Exercises | |
| |
| |
Programming Projects | |
| |
| |
| |
Stacks | |
| |
| |
| |
Introduction to Stacks and the STL Stack | |
| |
| |
| |
Stack Applications | |
| |
| |
| |
Implementations of the Stack Class | |
| |
| |
| |
More Complex Stack Applications | |
| |
| |
Chapter Summary | |
| |
| |
Solutions to Self-Test Exercises | |
| |
| |
Programming Projects | |
| |
| |
| |
Queues | |
| |
| |
| |
Introduction to Queues and the STL Queue | |
| |
| |
| |
Queue Applications | |
| |
| |
| |
Implementations of the Queue Class | |
| |
| |
| |
Priority Queues | |
| |
| |
| |
Reference Return Values for the Stack, Queue, and Priority Queue Classes | |
| |
| |
Chapter Summary | |
| |
| |
Solutions to Self-Test Exercises | |
| |
| |
Programming Projects | |
| |
| |
| |
Recursive Thinking | |
| |
| |
| |
Recursive Functions | |
| |
| |
| |
Studies of Recursion: Fractals and Mazes | |
| |
| |
| |
Reasoning about Recursion | |
| |
| |
Chapter Summary | |
| |
| |
Solutions to Self-Test Exercises | |
| |
| |
Programming Projects | |
| |
| |
| |
Trees | |
| |
| |
| |
Introduction to Trees | |
| |
| |
| |
Tree Representations | |
| |
| |
| |
Binary Tree Nodes | |
| |
| |
| |
Tree Traversals | |
| |
| |
| |
Binary Search Trees | |
| |
| |
Chapter Summary | |
| |
| |
Solutions to Self-Test Exercises | |
| |
| |
Programming Projects | |
| |
| |
| |
Tree Projects | |
| |
| |
| |
Heaps | |
| |
| |
| |
B-Trees | |
| |
| |
| |
Trees, Logs, and Time Analysis | |
| |
| |
Chapter Summary | |
| |
| |
Solutions to Self-Test Exercises | |
| |
| |
Programming Projects | |
| |
| |
| |
Searching | |
| |
| |
| |
Serial Search and Binary Search | |
| |
| |
| |
Open-Address Hashing | |
| |
| |
| |
Chained Hashing | |
| |
| |
| |
Time Analysis of Hashing | |
| |
| |
Chapter Summary | |
| |
| |
Solutions to Self-Test Exercises | |
| |
| |
Programming Projects | |
| |
| |
| |
Sorting | |
| |
| |
| |
Quadratic Sorting Algorithms | |
| |
| |
| |
Recursive Sorting Algorithms | |
| |
| |
| |
An O(n log n) Algorithm Using a Heap | |
| |
| |
| |
Standard Library Sorting Functions | |
| |
| |
Chapter Summary | |
| |
| |
Solutions to Self-Test Exercises | |
| |
| |
Programming Projects | |
| |
| |
| |
Derived Classes and Inheritance | |
| |
| |
| |
Derived Classes | |
| |
| |
| |
Simulation of an Ecosystem | |
| |
| |
| |
Virtual Member Functions and a Game Class | |
| |
| |
Chapter Summary | |
| |
| |
Further Reading | |
| |
| |
Solutions to Self-Test Exercises | |
| |
| |
Programming Projects | |
| |
| |
| |
Graphs | |
| |
| |
| |
Graph Definitions | |
| |
| |
| |
Graph Implementations | |
| |
| |
| |
Graph Traversals | |
| |
| |
| |
Path Algorithms | |
| |
| |
Chapter Summary | |
| |
| |
Solutions to Self-Test Exercises | |
| |
| |
Programming Projects | |
| |
| |
| |
Ascii Character Set | |
| |
| |
| |
Further Big-O Notation | |
| |
| |
| |
Precedence of Operators | |
| |
| |
| |
Compiling, Linking, and Running Programs | |
| |
| |
| |
Dealing with Older Compilers | |
| |
| |
| |
Input and Output in C++ | |
| |
| |
| |
Selected Library Functions | |
| |
| |
| |
Brief Reference for the Standard Template Classes | |
| |
| |
| |
A Toolkit of Useful Functions | |
| |
| |
| |
Fundamental Style Guide | |
| |
| |
| |
Downloading the GNU Compiler and Software | |
| |
| |
Index | |