{"product_id":"objects-abstraction-data-structures-and-design-9780471467557","title":"Objects Abstraction Data Structures and Design","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003eKoffman and Wolfgang introduce data structures in the context of C++ programming. They embed the design and implementation of data structures into the practice of sound software design principles that are introduced early and reinforced by 20 case studies. Data structures are introduced in the C++ STL format whenever possible.  Each new data structure is introduced by describing its interface in the STL. Next, one or two simpler applications are discussed then the data structure is implemented following the interface previously introduced. Finally, additional advanced applications are covered in the case studies, and the cases use the STL.  \u003cp\u003eIn the implementation of each data structure, the authors encourage students to perform a thorough analysis of the design approach and expected performance before actually undertaking detailed design and implementation. Students gain an understanding of why different data structures are needed, the applications they are suited for, and the advant\u003cbr\u003e\u003cbr\u003e\u003cb\u003eTable of Contents\u003c\/b\u003e\u003cbr\u003e\u003c\/p\u003e\u003cp\u003ePreface iii\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter P A C++ Primer 1\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eP.1 The C++ Environment 2\u003c\/p\u003e \u003cp\u003eP.2 Preprocessor Directives and Macros 7\u003c\/p\u003e \u003cp\u003eP.3 C++ Control Statements 12\u003c\/p\u003e \u003cp\u003eP.4 Primitive Data Types and Class Types 16\u003c\/p\u003e \u003cp\u003eP.5 Objects, Pointers, and References 23\u003c\/p\u003e \u003cp\u003eP.6 Functions 29\u003c\/p\u003e \u003cp\u003eP.7 Arrays and C Strings 33\u003c\/p\u003e \u003cp\u003eP.8 The string Class 38\u003c\/p\u003e \u003cp\u003eP.9 Input\/Output Using Streams 44\u003c\/p\u003e \u003cp\u003eChapter Review, Exercises, and Programming Projects 59\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 1 Introduction to Software Design 63\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e1.1 The Software Life Cycle 64\u003c\/p\u003e \u003cp\u003e1.2 Using Abstraction to Manage Complexity 73\u003c\/p\u003e \u003cp\u003e1.3 Defining C++ Classes 75\u003c\/p\u003e \u003cp\u003e1.4 Abstract Data Types, Interfaces, and Pre- and Postconditions 98\u003c\/p\u003e \u003cp\u003e1.5 Requirements Analysis, Use Cases, and Sequence Diagrams 102\u003c\/p\u003e \u003cp\u003e1.6 Design of an Array-Based Phone Directory 108\u003c\/p\u003e \u003cp\u003e1.7 Implementing and Testing the Array-Based Phone Directory 114\u003c\/p\u003e \u003cp\u003e1.8 Completing the Phone Directory Application 121\u003c\/p\u003e \u003cp\u003eChapter Review, Exercises, and Programming Projects 125\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 2 Program Correctness and Efficiency 129\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e2.1 Program Defects and “Bugs” 130\u003c\/p\u003e \u003cp\u003e2.2 Exceptions 138\u003c\/p\u003e \u003cp\u003e2.3 Testing Programs 148\u003c\/p\u003e \u003cp\u003e2.4 Debugging a Program 160\u003c\/p\u003e \u003cp\u003e2.5 Reasoning about Programs: Assertions and Loop Invariants 166\u003c\/p\u003e \u003cp\u003e2.6 Efficiency of Algorithms 170\u003c\/p\u003e \u003cp\u003eChapter Review, Exercises, and Programming Projects 179\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 3 Inheritance and Class Hierarchies 185\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e3.1 Introduction to Inheritance and Class Hierarchies 186\u003c\/p\u003e \u003cp\u003e3.2 Member Function Overriding, Member Function Overloading, and Polymorphism 193\u003c\/p\u003e \u003cp\u003e3.3 Abstract Classes, Assignment, and Casting in a Hierarchy 202\u003c\/p\u003e \u003cp\u003e3.4 Multiple Inheritance 210\u003c\/p\u003e \u003cp\u003e3.5 Namespaces and Visibility 213\u003c\/p\u003e \u003cp\u003e3.6 A Shape Class Hierarchy 220\u003c\/p\u003e \u003cp\u003eChapter Review, Exercises, and Programming Projects 225\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 4 Sequential Containers 231\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e4.1 Template Classes and the Vector 232\u003c\/p\u003e \u003cp\u003e4.2 Applications of vector 238\u003c\/p\u003e \u003cp\u003e4.3 Implementation of a vector Class 240\u003c\/p\u003e \u003cp\u003e4.4 The Copy Constructor, Assignment Operator, and Destructor 247\u003c\/p\u003e \u003cp\u003e4.5 Single-Linked Lists and Double-Linked Lists 252\u003c\/p\u003e \u003cp\u003e4.6 The list Class and the Iterator 264\u003c\/p\u003e \u003cp\u003e4.7 Implementation of a Double-Linked List Class 271\u003c\/p\u003e \u003cp\u003e4.8 Application of the list Class 285\u003c\/p\u003e \u003cp\u003e4.9 Standard Library Containers 292\u003c\/p\u003e \u003cp\u003e4.10 Standard Library Algorithms and Function Objects 297\u003c\/p\u003e \u003cp\u003eChapter Review, Exercises, and Programming Projects 307\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 5 Stacks 311\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e5.1 The Stack Abstract Data Type 312\u003c\/p\u003e \u003cp\u003e5.2 Stack Applications 315\u003c\/p\u003e \u003cp\u003e5.3 Implementing a Stack 325\u003c\/p\u003e \u003cp\u003e5.4 Additional Stack Applications 332\u003c\/p\u003e \u003cp\u003eChapter Review, Exercises, and Programming Projects 351\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 6 Queues and Deques 357\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e6.1 The Queue Abstract Data Type 358\u003c\/p\u003e \u003cp\u003e6.2 Maintaining a Queue of Customers 362\u003c\/p\u003e \u003cp\u003e6.3 Implementing the Queue ADT 365\u003c\/p\u003e \u003cp\u003e6.4 The Deque 376\u003c\/p\u003e \u003cp\u003e6.5 Simulating Waiting Lines Using Queues 380\u003c\/p\u003e \u003cp\u003eChapter Review, Exercises, and Programming Projects 398\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 7 Recursion 403\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e7.1 Recursive Thinking 404\u003c\/p\u003e \u003cp\u003e7.2 Recursive Definitions of Mathematical Formulas 412\u003c\/p\u003e \u003cp\u003e7.3 Recursive Search 420\u003c\/p\u003e \u003cp\u003e7.4 Problem Solving with Recursion 426\u003c\/p\u003e \u003cp\u003e7.5 Backtracking 435\u003c\/p\u003e \u003cp\u003eChapter Review, Exercises, and Programming Projects 440\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 8 Trees 445\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e8.1 Tree Terminology and Applications 447\u003c\/p\u003e \u003cp\u003e8.2 Tree Traversals 454\u003c\/p\u003e \u003cp\u003e8.3 Implementing a Binary_Tree Class 457\u003c\/p\u003e \u003cp\u003e8.4 Binary Search Trees 466\u003c\/p\u003e \u003cp\u003e8.5 Heaps and Priority Queues 484\u003c\/p\u003e \u003cp\u003e8.6 Huffman Trees 496\u003c\/p\u003e \u003cp\u003eChapter Review, Exercises, and Programming Projects 505\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 9 Sets and Maps 511\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e9.1 Associative Container Requirements 512\u003c\/p\u003e \u003cp\u003e9.2 Maps and Multimaps 521\u003c\/p\u003e \u003cp\u003e9.3 Hash Tables 530\u003c\/p\u003e \u003cp\u003e9.4 Implementing the Hash Table 542\u003c\/p\u003e \u003cp\u003e9.5 Implementation Considerations for the hash_map 555\u003c\/p\u003e \u003cp\u003e9.6 Additional Applications of Maps 558\u003c\/p\u003e \u003cp\u003eChapter Review, Exercises, and Programming Projects 564\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 10 Sorting 569\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e10.1 Using C++ Sorting Functions 570\u003c\/p\u003e \u003cp\u003e10.2 Selection Sort 572\u003c\/p\u003e \u003cp\u003e10.3 Bubble Sort 577\u003c\/p\u003e \u003cp\u003e10.4 Insertion Sort 581\u003c\/p\u003e \u003cp\u003e10.5 Comparison of Quadratic Sorts 586\u003c\/p\u003e \u003cp\u003e10.6 Shell Sort: A Better Insertion Sort 588\u003c\/p\u003e \u003cp\u003e10.7 Merge Sort 592\u003c\/p\u003e \u003cp\u003e10.8 Heapsort 599\u003c\/p\u003e \u003cp\u003e10.9 Quicksort 604\u003c\/p\u003e \u003cp\u003e10.10 Testing the Sort Algorithms 614\u003c\/p\u003e \u003cp\u003e10.11 The Dutch National Flag Problem (Optional Topic) 616\u003c\/p\u003e \u003cp\u003eChapter Review, Exercises, and Programming Projects 620\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 11 Self-Balancing Search Trees 623\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e11.1 Tree Balance and Rotation 624\u003c\/p\u003e \u003cp\u003e11.2 AVL Trees 628\u003c\/p\u003e \u003cp\u003e11.3 Red-Black Trees 643\u003c\/p\u003e \u003cp\u003e11.4 2-3 Trees 656\u003c\/p\u003e \u003cp\u003e11.5 2-3-4 and B-Trees 663\u003c\/p\u003e \u003cp\u003eChapter Review, Exercises, and Programming Projects 681\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 12 Graphs 691\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e12.1 Graph Terminology 692\u003c\/p\u003e \u003cp\u003e12.2 The Graph ADT and Edge Class 697\u003c\/p\u003e \u003cp\u003e12.3 Implementing the Graph ADT 701\u003c\/p\u003e \u003cp\u003e12.4 Traversals of Graphs 715\u003c\/p\u003e \u003cp\u003e12.5 Applications of Graph Traversals 727\u003c\/p\u003e \u003cp\u003e12.6 Algorithms Using Weighted Graphs 734\u003c\/p\u003e \u003cp\u003eChapter Review, Exercises, and Programming Projects 743\u003c\/p\u003e \u003cp\u003e\u003cb\u003eAppendix A Advanced C++ Topics 755\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eA.1 Source Character Set, Trigraphs, Digraphs, and Alternate Keywords 755\u003c\/p\u003e \u003cp\u003eA.2 The Allocator 756\u003c\/p\u003e \u003cp\u003eA.3 Traits 757\u003c\/p\u003e \u003cp\u003eA.4 Virtual Base Classes 759\u003c\/p\u003e \u003cp\u003eA.5 Smart Pointers 764\u003c\/p\u003e \u003cp\u003e\u003cb\u003eAppendix B Overview of UML 769\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eB.1 The Class Diagram 770\u003c\/p\u003e \u003cp\u003eB.2 Sequence Diagrams 776\u003c\/p\u003e \u003cp\u003eAppendix C The CppUnit Test Framework 779\u003c\/p\u003e \u003cp\u003eGlossary 783\u003c\/p\u003e \u003cp\u003eIndex 795\u003c\/p\u003e","brand":"John Wiley \u0026 Sons Inc","offers":[{"title":"Default Title","offer_id":49402604159319,"sku":"9780471467557","price":168.26,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0817\/1739\/5799\/files\/9780471467557.jpg?v=1730480928","url":"https:\/\/bookcurl.com\/products\/objects-abstraction-data-structures-and-design-9780471467557","provider":"Book Curl","version":"1.0","type":"link"}