Data Structures Via C++ : Objects by Evolution
This text is designed for a CS2 data structures course using C++ as the base programming language. The author introduces Object-Oriented Programming concepts in the context of traditional data structures and alghorithms, emphasizing encapsulation from the beginning and gradually bringing in generics, inheritance and polymorphism as the book progresses. Real world examples present the material in a way that makes the text accessible to students. All supporting materials, including source code, will be available to the faculty and students via the World Wide Web.
- Hardback | 496 pages
- 198.1 x 243.8 x 30.5mm | 1,043.27g
- 17 Apr 1997
- Oxford University Press
- Oxford, United Kingdom
- numerous line drawings
Back cover copy
Bringing together the fundamental topics of a traditional introductory data structures course and the current world of C++ and object-oriented programming, Data Structures via C++: Objects by Evolution offers an evolutionary approach to the subject. It combines a sound pedagogy for teaching data structures at the introductory (CS2) level with modern ideas in software engineering and object-oriented programming. The book introduces students (and instructors) to C++ and object-oriented programming using a "just-in-time" approach which leads readers from traditional techniques to more current ideas.
Table of contents
1. Software Engineering and Computer Programming ; Software Engineering and Computer Science ; The Software "Life-Cycle" ; Why C++? ; 2. Designing Software: Two Approaches ; Why Design? ; Top-Down Design ; The Object Alternative ; Which method is Better, TDD or OOD? ; 3. Software Reliability ; Riss of Faulty Software ; Testing ; Applying Program Correctness Techniques ; 4. Abstract Data Types, Classes and Objects ; Problem: Computing with Time ; Describing Data Types ; ADT Implementation and Code Reuse ; Information Hiding, Encapsulation, and Views ; Creating Encapsulated ADT's Using the C++ Class ; Using Standard C++ Class Libraries ; ADT's, Objects, and Object-Oriented Programming ; 5. Efficiency ; Selecting Good Algorithms ; The Many Faces of Program Efficiency ; Algorithms for Searching ; Analysis of some Simple Sorting Algorithms ; 6. Recursion ; Solving Problems with Recursion ; Recursive Definitions ; Applying Recursion to Sorting and Searching Problems ; How is Recursion implemented? ; 7. Lists ; Problem: A Membership Management Program ; The List ADT ; Implementing Lists ; The Inorder List ADT ; Variations on a Linked List ; A Dynamic Linear List ; The Membership Management Program Revisited ; 8. Stacks ; Problem: Robot Navigation ; The Stack ADT ; Implementing the Stack 1: Array ; Creating Generic Classes with Templates ; Implementing the Stack 2: Dynamic List ; Applications of the Stack ADT ; The Robot Navigation Problem Solved ; 9. Queue ; Problem: Computer Network Performance ; The Queue ADT ; Implementing a Queue 1: Array ; Implementing a Queue 2: Dynamic List ; Simulation: modelling a computer network ; 10. Tables ; A Data Structure to Support Retrieval by Key ; Implementing a Table ; Hash Tables for Fast Retrieval ; Using Tables ; 11. Trees ; Introducing Trees ; Building a Binary Tree ; Tree Traversal ; Binary Search Trees ; Reuse Through Inheritance: A Hierarchy of Trees ; Performance of Binary Trees ; 12. Graphs ; Example: Keeping Track of Course Prerequisites ; Basic Graph Concepts and Terminology ; Creating Graph ADT's ; Implementing and Using Adjacency List Graphs ; Implementing and Using Adjacency Matrix Graphs ; Appendix A: A Brief Review of C++ ; Appendix B: C++ for the Pascal Programmer ; Appendix C: C++ for the C Programmer
The author has kept abreast of developements in C++. He provides good coverage of the concepts and his code is above average in quality. I would be happy to use this as a student text. Journal of the Associat ion of C and C++ Users