Preface |
|
v | |
|
Software Engineering Principles |
|
|
1 | (62) |
|
|
2 | (7) |
|
|
9 | (10) |
|
Verification of Software Correctness |
|
|
19 | (44) |
|
Case Study: Fraction Class |
|
|
50 | (8) |
|
|
58 | (2) |
|
|
60 | (3) |
|
Data Design and Implementation |
|
|
63 | (60) |
|
|
64 | (8) |
|
Abstraction and Built in Types |
|
|
72 | (13) |
|
Higher Level Abstraction and the C++ Class Type |
|
|
85 | (6) |
|
Object Oriented Programming |
|
|
91 | (4) |
|
Construct for Program Verification |
|
|
95 | (28) |
|
Case Study: User Defined String 1/0 Class |
|
|
100 | (16) |
|
|
116 | (1) |
|
|
117 | (6) |
|
ADTs Unsorted List and Sorted List |
|
|
123 | (72) |
|
|
124 | (1) |
|
Abstract Data Type Unsorted List |
|
|
125 | (21) |
|
Abstract Data Type Sorted List |
|
|
146 | (11) |
|
|
157 | (7) |
|
Comparison of Unsorted and Sorted List ADT Algorithms |
|
|
164 | (3) |
|
|
167 | (3) |
|
Object-Oriented Design Methodology |
|
|
170 | (25) |
|
Case Study: Real Estate Listing: An Object-Oriented Design |
|
|
173 | (15) |
|
|
188 | (1) |
|
|
189 | (6) |
|
|
195 | (84) |
|
|
196 | (14) |
|
More about Generics: C++ Templates |
|
|
210 | (4) |
|
|
214 | (8) |
|
Dynamically Allocated Arrays |
|
|
222 | (57) |
|
|
245 | (16) |
|
|
261 | (1) |
|
|
262 | (17) |
|
|
279 | (54) |
|
Implementing a Stack as a Linked Structure |
|
|
280 | (16) |
|
Implementing a Queue as a Linked Structure |
|
|
296 | (11) |
|
Implementing the Unsorted List as a Linked Structure |
|
|
307 | (11) |
|
Implementing the Sorted List as a Linked Structure |
|
|
318 | (15) |
|
|
327 | (1) |
|
|
327 | (6) |
|
|
333 | (66) |
|
|
334 | (10) |
|
|
344 | (4) |
|
Linked Lists with Headers and Trailers |
|
|
348 | (2) |
|
|
350 | (8) |
|
A Linked List as an Array of Records |
|
|
358 | (10) |
|
Polymorphism with Virtual Functions |
|
|
368 | (5) |
|
|
373 | (26) |
|
Case Study: Implementing a Large Integer ADT |
|
|
379 | (13) |
|
|
392 | (1) |
|
|
392 | (7) |
|
Programming with Recursion |
|
|
399 | (56) |
|
|
400 | (1) |
|
The Classic Example of Recursion |
|
|
401 | (3) |
|
|
404 | (3) |
|
Verifying Recursive Functions |
|
|
407 | (1) |
|
Writing Recursive Functions |
|
|
408 | (3) |
|
Using Recursion to Simplify Solutions |
|
|
411 | (1) |
|
Recursive Linked List Processing |
|
|
412 | (4) |
|
A Recursive Version of Binary Search |
|
|
416 | (2) |
|
Recursive Versions of InsertItem and DeleteItem |
|
|
418 | (2) |
|
|
420 | (9) |
|
Tracing the Execution of Recursive Function Insert |
|
|
429 | (3) |
|
Debugging Recursive Routines |
|
|
432 | (1) |
|
|
432 | (4) |
|
Deciding Whether to Use a Recursive Solution |
|
|
436 | (19) |
|
|
438 | (8) |
|
|
446 | (1) |
|
|
447 | (8) |
|
|
455 | (74) |
|
|
456 | (4) |
|
|
460 | (3) |
|
|
463 | (1) |
|
|
463 | (1) |
|
Recursive Binary Search Tree Operations |
|
|
464 | (32) |
|
Iterative Insertion and Deletion |
|
|
496 | (8) |
|
Comparing Binary Search Trees and Linear Lists |
|
|
504 | (2) |
|
A Nonlinked Representation of Binary Trees |
|
|
506 | (23) |
|
Case Study: Building an Index |
|
|
510 | (7) |
|
|
517 | (1) |
|
|
517 | (12) |
|
Priority Queues, Heaps, Graphs, and Sets |
|
|
529 | (59) |
|
|
530 | (3) |
|
|
533 | (13) |
|
|
546 | (25) |
|
|
571 | (17) |
|
|
579 | (1) |
|
|
579 | (9) |
|
Sorting and Searching Algorithms |
|
|
588 | (65) |
|
|
588 | (31) |
|
|
619 | (3) |
|
|
622 | (15) |
|
|
637 | (16) |
|
|
642 | (2) |
|
|
644 | (9) |
Answer to Selected Exercises |
|
653 | (60) |
Appendix A Reserved Words |
|
713 | (1) |
Appendix B Operator Precedents |
|
713 | (2) |
Appendix C A Selection of Standard Library Routines |
|
715 | (9) |
Appendix D Character Sets |
|
724 | (2) |
Appendix E The Standard Template Library |
|
726 | (45) |
Glossary |
|
771 | (18) |
Index |
|
789 | |