ADTs, data structures, and problem solving with C++
By: Larry R. Nyhoff.
Contributors: Nyhoff, Larry R. an inroduction to data structures.
Edition: 2nd ed.
Publisher: Pearson/Prentice Hall
Published: 2005
Place of publication: Upper Saddle River, NJ
Language: eng
Format: Hardcover
Number of pages: 1072
Subjects: C++ (Computer program language); Data structures (Computer science)
Description: "Designed for CS2 courses, this book thoroughly covers ADTs (Abstract Data Types), data structures, and their use in problem solving. The text guides the student through the development of ADTs such as stacks, queues, and binary trees, the use of key data structures such as arrays, classes, and linked lists to implement ADTs, and problem solving using Object-Oriented Design (OOD) methodologies. Algorithms required to design and implement ADTs in C++ are given through treatment along with a solid introduction to the Standard Template Library (STL). C++ topics such as recursion, inheritance, and polymorphism are introduced and some C-style topics relative to data structures and also provided. Using examples, case studies and exercises from various areas of computer science, author Larry Nyhoff offers the student a solid foundation for further studies in CS while providing concrete tools for unlocking the power of C++."--BOOK JACKET.
Notes: Rev. ed. of: C++: an introduction to data structures. 1999.
"An Alan R. Apt book."
Includes index.
Table of contents: label: 1
title: Software Development
pagenum: 1; label: 1.1
title: Problem Analysis and Specification
pagenum: 4; label: 1.2
title: Design
pagenum: 6; title: Top-Down Design
pagenum: 6; title: Object-Oriented Design
pagenum: 8; title: Design in the Small
pagenum: 11; label: 1.3
title: Coding
pagenum: 16; label: 1.4
title: Testing, Execution, and Debugging
pagenum: 30; label: 1.5
title: Maintenance
pagenum: 38; title: Quick Quiz 1.5
pagenum: 39; title: Exercises 1.5
pagenum: 40; title: Summary
pagenum: 41; title: Chapter Notes
pagenum: 41; title: Programming Pointers
pagenum: 41; title: ADT Tips
pagenum: 42; title: Programming Problems
pagenum: 42; label: 2
title: Introduction to Abstract Data Types
pagenum: 45; label: 2.1
title: A First Look at ADTs and Implementations
pagenum: 46; label: 2.2
title: C++'s Simple Data Types
pagenum: 46; title: Integer Data
pagenum: 47; title: Real Data
pagenum: 52; title: Character Data
pagenum: 55; title: Boolean Data
pagenum: 56; title: Quick Quiz 2.2
pagenum: 58; title: Exercises 2.2
pagenum: 58; label: 2.3
title: Programmer-Defined Data Types
pagenum: 59; title: Typedefs
pagenum: 59; title: Enumerations
pagenum: 60; title: Classes
pagenum: 62; title: Quick Quiz 2.3
pagenum: 62; title: Exercises 2.3
pagenum: 62; label: 2.4
title: Pointers
pagenum: 63; title: Declaring and Initializing Pointers
pagenum: 64; title: Basic Pointer Operations
pagenum: 67; title: Dynamic Memory Allocation — the new Operation
pagenum: 71; title: A Note about Reference Parameters
pagenum: 72; title: Quick Quiz 2.4
pagenum: 73; title: Exercises 2.4
pagenum: 74; title: Summary
pagenum: 75; title: Chapter Notes
pagenum: 75; title: Programming Pointers
pagenum: 76; title: ADT Tips
pagenum: 77; title: Programming Problems
pagenum: 77; label: 3
title: Data Structures and Abstract Data Types
pagenum: 81; label: 3.1
title: Data Structures, Abstract Data Types, and Implementations
pagenum: 82; label: 3.2
title: Static Arrays
pagenum: 85; title: One-Dimensional Static Arrays
pagenum: 87; title: The Subscript Operation
pagenum: 90; title: Arrays as Parameters
pagenum: 91; title: Out-of-Range Errors
pagenum: 92; title: Problems with Arrays
pagenum: 95; title: Quick Quiz 3.2
pagenum: 96; title: Exercises 3.2
pagenum: 97; label: 3.3
title: Multidimensional Arrays (optional)
pagenum: 97; title: Two-Dimensional Arrays
pagenum: 97; title: Higher-Dimensional Arrays
pagenum: 99; title: Array of Array Declarations
pagenum: 100; title: Multidimensional Arrays as Parameters
pagenum: 105; title: Quick Quiz 3.3
pagenum: 106; title: Exercises 3.3
pagenum: 106; label: 3.4
title: Dynamic Arrays
pagenum: 107; title: The new Operation — Dynamic Arrays
pagenum: 108; title: Other Uses of Pointers
pagenum: 121; title: Quick Quiz 3.4
pagenum: 122; title: Exercises 3.4
pagenum: 123; label: 3.5
title: C-Style Structs (optional)
pagenum: 123; title: Pointers to Structs
pagenum: 127; title: Quick Quiz 3.5
pagenum: 128; label: 3.6
title: Procedural Programming
pagenum: 128; title: Example of Procedural Programming
pagenum: 129; title: Summary
pagenum: 135; title: Chapter Notes
pagenum: 135; title: Programming Pointers
pagenum: 136; title: ADT Tips
pagenum: 137; title: Programming Problems
pagenum: 137; label: 4
title: More about OOP and ADTs—Classes
pagenum: 143; label: 4.1
title: Procedural vs. Object-Oriented Programming
pagenum: 144; title: Quick Quiz 4.1
pagenum: 145; label: 4.2
title: Classes
pagenum: 145; title: Differences between "Traditional" (C) Structs and OOP (C++) Structs and Classes
pagenum: 145; title: Class Declarations
pagenum: 146; title: Quick Quiz 4.2
pagenum: 150; label: 4.3
title: Example: A First Version of a User-Defined Time Class
pagenum: 150; title: Why not make all class members public?
pagenum: 152; title: Implementation of a Class
pagenum: 153; title: Some Observations
pagenum: 156; label: 4.4
title: Class Constructors
pagenum: 158; label: 4.5
title: Other Class Operations
pagenum: 165; title: Copy Operations — Initialization and Assignment
pagenum: 166; title: Accessors and Mutators
pagenum: 167; title: Overloading Operators
pagenum: 169; title: Overloading Input/Output Operators
pagenum: 170; title: Other Operations: Advance and the Relational Operators
pagenum: 177; title: Summary and a Few Other Items
pagenum: 180; title: Pointers to Class Objects
pagenum: 185; title: The this Pointer
pagenum: 185; title: Quick Quiz 4.5
pagenum: 187; title: Exercises 4.5
pagenum: 187; title: Summary
pagenum: 188; title: Chapter Notes
pagenum: 188; title: Programming Pointers
pagenum: 189; title: ADT Tips
pagenum: 190; title: Programming Problems
pagenum: 190; label: 5
title: Standard C++ Input/Output and String Classes
pagenum: 193; label: 5.1
title: The C++ Standard I/O Classes
pagenum: 194; title: The istream Class
pagenum: 195; title: The ostream Class
pagenum: 200; title: File I/O: ifstream and ofstream Classes
pagenum: 204; title: The I/O Class Hierarchy
pagenum: 206; title: Quick Quiz 5.1
pagenum: 210; label: 5.2
title: The C++ String Types
pagenum: 211; title: C-Style Strings
pagenum: 212; title: The C++ string Class
pagenum: 216; title: String Streams
pagenum: 225; title: Quick Quiz 5.2
pagenum: 228; title: Exercises 5.2
pagenum: 229; label: 5.3
title: Case Study: Text Editing
pagenum: 230; label: 5.4
title: Introduction to Pattern Matching (optional)
pagenum: 240; label: 5.5
title: Introduction to Data Encryption (optional)
pagenum: 243; title: Data Encryption Standard
pagenum: 245; title: Public-Key Encryption
pagenum: 246; title: Summary
pagenum: 247; title: Chapter Notes
pagenum: 247; title: Programming Pointers
pagenum: 248; title: ADT Tips
pagenum: 249; title: Programming Problems
pagenum: 249; label: 6
title: Lists
pagenum: 253; label: 6.1
title: List as an ADT
pagenum: 254; title: Designing and Building a List Class
pagenum: 256; label: 6.2
title: An Array-Based Implementation of Lists
pagenum: 257; title: Selecting a Storage Structure
pagenum: 257; title: Implementing the Operations
pagenum: 258; title: A List Class With Static Array Storage
pagenum: 260; label: 6.3
title: An Array-Based Implementation of Lists with Dynamic Allocation
pagenum: 269; title: Dynamic Allocation in Classes — Destructors, Copy Constructors, and Assignment
pagenum: 275; title: A Final Note
pagenum: 283; title: Quick Quiz 6.3
pagenum: 286; title: Exercises 6.3
pagenum: 287; label: 6.4
title: Introduction to Linked Lists
pagenum: 287; title: What Are They?
pagenum: 287; title: Implementing the Basic List Operations
pagenum: 288; title: Summary
pagenum: 293; title: Quick Quiz 6.4
pagenum: 294; title: Exercises 6.4
pagenum: 294; label: 6.5
title: A Pointer-Based Implementation of Linked Lists in C++
pagenum: 295; title: Node Structure
pagenum: 295; title: Data Members for Linked-List Implementation
pagenum: 297; title: Function Members for Linked-List Implementation
pagenum: 298; title: Exercises 6.5
pagenum: 301; label: 6.6
title: An Array-Based Implementation of Linked Lists (optional)
pagenum: 303; title: Node Structure
pagenum: 303; title: Organizing the Storage Pool
pagenum: 306; title: Exercises 6.6
pagenum: 308; title: Summary
pagenum: 309; title: Chapter Notes
pagenum: 309; title: Programming Pointers
pagenum: 309; title: ADT Tips
pagenum: 310; title: Programming Problems
pagenum: 312; label: 7
title: Stacks
pagenum: 315; label: 7.1
title: Introduction to Stacks
pagenum: 316; title: Problem 1
pagenum: 316; title: Problem 2
pagenum: 316; title: Problem 3
pagenum: 316; title: Problem 4
pagenum: 317; label: 7.2
title: Designing and Building a Stack Class — Array-Based
pagenum: 321; title: Selecting Storage Structures
pagenum: 322; title: Implementing the Operations
pagenum: 325; title: The Complete Stack Class
pagenum: 327; title: Using a Dynamic Array to Store the Stack Elements
pagenum: 333; title: A Look Ahead
pagenum: 348; title: Quick Quiz 7.2
pagenum: 349; title: Exercises 7.2
pagenum: 350; label: 7.3
title: Linked Stacks
pagenum: 353; title: Selecting a Storage Structure
pagenum: 353; title: Implementing the Operations
pagenum: 354; title: The Complete Stack Class: Linked List Version
pagenum: 357; title: Exercises 7.3
pagenum: 365; label: 7.4
title: Use of Stacks in Function Calls
pagenum: 366; title: Quick Quiz 7.4
pagenum: 370; title: Exercises 7.4
pagenum: 370; label: 7.5
title: Case Study: Postfix (RPN) Notation
pagenum: 371; title: Evaluating Postfix Expressions
pagenum: 372; title: Converting Infix Expressions to Postfix
pagenum: 374; title: Quick Quiz 7.5
pagenum: 383; title: Exercises 7.5
pagenum: 384; title: Summary
pagenum: 386; title: Chapter Notes
pagenum: 386; title: Programming Pointers
pagenum: 386; title: ADT Tips
pagenum: 386; title: Programming Problems
pagenum: 386; label: 8
title: Queues
pagenum: 389; label: 8.1
title: Introduction to Queues
pagenum: 389; title: Example: Drill and Practice Problems
pagenum: 391; label: 8.2
title: Designing and Building a Queue Class — Array-Based
pagenum: 400; title: Using a Static Array to Store the Queue Elements
pagenum: 403; title: Using a Dynamic Array to Store the Queue Elements
pagenum: 408; title: Quick Quiz 8.2
pagenum: 409; title: Exercises 8.2
pagenum: 410; label: 8.3
title: Linked Queues
pagenum: 412; title: A Natural Linked-List Implementation
pagenum: 413; title: Using a Circular Linked List
pagenum: 423; title: Quick Quiz 8.3
pagenum: 424; title: Exercises 8.3
pagenum: 424; label: 8.4
title: Application of Queues: Buffers and Scheduling
pagenum: 426; title: Quick Quiz 8.4
pagenum: 429; title: Exercises 8.4
pagenum: 429; label: 8.5
title: Case Study: Information Center Simulation
pagenum: 429; title: Problem Analysis and Specification
pagenum: 430; title: Building a Simulation Class
pagenum: 430; title: The Timer and Call Classes
pagenum: 441; title: Summary
pagenum: 441; title: Chapter Notes
pagenum: 441; title: Programming Pointers
pagenum: 442; title: ADT Tips
pagenum: 442; title: Programming Problems
pagenum: 442; label: 9
title: ADT Implementations: Templates and Standard Containers
pagenum: 445; label: 9.1
title: Introduction: The Evolution of Reusability and Genericity
pagenum: 446; title: From Algorithms to Algorithms
pagenum: 446; title: From Data to Containers
pagenum: 448; label: 9.2
title: Function Genericity — Overloading and Templates
pagenum: 448; title: Overloading
pagenum: 449; title: Function Templates
pagenum: 451; title: Another Example: Displaying an Array
pagenum: 455; label: 9.3
title: Class Genericity — Templates
pagenum: 457; title: What's Wrong with typedef?
pagenum: 457; title: Class Templates
pagenum: 458; title: An Alternative Version of the Stack Class Template
pagenum: 472; title: A Quick Peek at the Standard C++ Container Class Templates
pagenum: 473; title: Quick Quiz 9.3
pagenum: 474; title: Exercises 9.3
pagenum: 475; label: 9.4
title: The vector Container
pagenum: 475; title: Declaring vector Objects
pagenum: 476; title: Some vector Operations
pagenum: 478; title: A First Look Under the Hood — Increasing the Capacity
pagenum: 482; title: A First Look at Iterators
pagenum: 485; title: Some vector Methods Involving Iterators
pagenum: 489; title: Wrap-up: vectors versus Arrays
pagenum: 490; title: Quick Quiz 9.4
pagenum: 491; title: Exercises 9.4
pagenum: 492; label: 9.5
title: Case Study: Counting Computer Logins
pagenum: 494; label: 9.6
title: Multidimensional vectors (Optional)
pagenum: 499; title: Two-Dimensional vector Objects
pagenum: 499; title: Two-Dimensional vector Operations
pagenum: 500; title: Exercises 9.6
pagenum: 503; label: 9.7
title: Other Standard Containers — deque, stack, and queue
pagenum: 503; title: STL's deque Class Template
pagenum: 503; title: A New (But Unnecessary) Version of Our Stack Class Template
pagenum: 507; title: STL's stack Adapter
pagenum: 509; title: STL's queue Adapter
pagenum: 510; title: Quick Quiz 9.7
pagenum: 510; label: 9.8
title: Bitsets and Valarrays (optional)
pagenum: 511; title: Bitsets
pagenum: 511; title: Valarrays
pagenum: 513; title: Slices, Masks, and Indirect Arrays
pagenum: 515; title: Summary
pagenum: 516; title: Chapter Notes
pagenum: 516; title: Programming Pointers
pagenum: 516; title: ADT Tips
pagenum: 517; title: Programming Problems
pagenum: 517; label: 10
title: ADT Implementation: Recursion, Algorithm Analysis, and Standard Algorithms
pagenum: 521; label: 10.1
title: Recursion
pagenum: 522; title: Examples of Recursive Functions
pagenum: 522; title: Coding Recursive Functions
pagenum: 524; title: Example of Inappropriate Recursion: Fibonacci Numbers
pagenum: 527; title: Example: Binary Search
pagenum: 529; title: Example: Palindrome Checker
pagenum: 532; title: Quick Quiz 10.1
pagenum: 534; title: Exercises 10.1
pagenum: 534; label: 10.2
title: Examples of Recursion: Towers of Hanoi; Parsing
pagenum: 538; title: Towers of Hanoi
pagenum: 538; title: Parsing
pagenum: 541; title: Exercises 10.2
pagenum: 547; label: 10.3
title: Implementing Recursion
pagenum: 548; label: 10.4
title: Algorithm Efficiency
pagenum: 551; title: Quick Quiz 10.4
pagenum: 562; title: Exercises 10.4
pagenum: 563; label: 10.5
title: Standard Algorithms in C++
pagenum: 564; title: Example: STL's sort Algorithm
pagenum: 564; title: A Sample of STL Algorithms
pagenum: 570; title: Algorithms from the <numeric> Library
pagenum: 572; title: Example: Judging Figure Skating
pagenum: 572; title: Quick Quiz 10.5
pagenum: 573; label: 10.6
title: Proving Algorithms Correct (optional)
pagenum: 573; title: Example: Calculating the Mean
pagenum: 574; title: Example: Recursive Power Function
pagenum: 576; title: Summary
pagenum: 577; title: Exercises 10.6
pagenum: 578; title: Summary
pagenum: 579; title: Chapter Notes
pagenum: 579; title: Programming Pointers
pagenum: 579; title: ADT Tips
pagenum: 579; title: Programming Problems
pagenum: 580; label: 11
title: More Linking Up with Linked Lists
pagenum: 585; label: 11.1
title: Some Variants of Singly-Linked Lists
pagenum: 586; title: Linked Lists with Head Nodes
pagenum: 586; title: Circular Linked Lists
pagenum: 589; title: Quick Quiz 11.1
pagenum: 591; title: Exercises 11.1
pagenum: 592; label: 11.2
title: Linked Implementation of Sparse Polynomials
pagenum: 593; title: Exercises 11.2
pagenum: 602; label: 11.3
title: Doubly-Linked Lists and the Standard C++ list
pagenum: 602; title: Doubly-Linked Lists
pagenum: 602; title: The Standard list Class Template
pagenum: 604; title: Example: Internet Addresses
pagenum: 612; title: A Look under the Hood at C++'s list
pagenum: 616; title: Exercises 11.3
pagenum: 620; label: 11.4
title: Case Study: Large-Integer Arithmetic
pagenum: 621; title: Problem
pagenum: 621; title: Design
pagenum: 621; title: Implementation
pagenum: 623; title: Exercises 11.4
pagenum: 631; label: 11.5
title: Other Multiply-Linked Lists
pagenum: 631; title: Multiply-Ordered Lists
pagenum: 631; title: Sparse Matrices
pagenum: 632; title: Generalized Lists
pagenum: 635; title: Exercises 11.5
pagenum: 637; title: Summary
pagenum: 639; title: Chapter Notes
pagenum: 639; title: Programming Pointers
pagenum: 639; title: ADT Tips
pagenum: 639; title: Programming Problems
pagenum: 640; label: 12
title: Searching: Binary Trees and Hash Tables
pagenum: 645; label: 12.1
title: Review of Linear Search and Binary Search
pagenum: 646; title: Linear Search
pagenum: 646; title: Binary Search
pagenum: 648; title: Exercises 12.1
pagenum: 650; label: 12.2
title: Introduction to Binary Trees
pagenum: 651; title: Tree Terminology
pagenum: 652; title: Some Examples of Binary Trees
pagenum: 653; title: Array Representation of Binary Trees
pagenum: 655; title: Linked Representation of Binary Trees
pagenum: 657; title: Quick Quiz 12.2
pagenum: 658; title: Exercises 12.2
pagenum: 659; label: 12.3
title: Binary Trees as Recursive Data Structures
pagenum: 660; title: Traversals
pagenum: 661; title: Quick Quiz 12.3
pagenum: 665; title: Exercises 12.3
pagenum: 665; label: 12.4
title: Binary Search Trees
pagenum: 667; title: Implementing BSTs
pagenum: 667; title: BST Traversals
pagenum: 670; title: Searching a BST
pagenum: 674; title: Inserting into a BST
pagenum: 677; title: Removing a Node from a BST
pagenum: 681; title: Problem of Lopsidedness
pagenum: 693; title: Quick Quiz 12.4
pagenum: 694; title: Exercises 12.4
pagenum: 695; label: 12.5
title: Case Study: Validating Computer Logins
pagenum: 698; title: Problem
pagenum: 698; title: Design
pagenum: 698; title: Coding
pagenum: 699; label: 12.6
title: Threaded Binary Search Trees (Optional)
pagenum: 702; title: Quick Quiz 12.6
pagenum: 706; title: Exercises 12.6
pagenum: 706; label: 12.7
title: Hash Tables
pagenum: 707; title: Hash Functions
pagenum: 708; title: Collision Strategies
pagenum: 709; title: Improvements
pagenum: 710; title: Quick Quiz 12.7
pagenum: 714; title: Exercises 12.7
pagenum: 714; title: Summary
pagenum: 715; title: Chapter Notes
pagenum: 715; title: Programming Pointers
pagenum: 715; title: ADT Tips
pagenum: 716; title: Programming Problems
pagenum: 716; label: 13
title: Sorting
pagenum: 721; label: 13.1
title: Some \(O(n^2)\) Sorting Schemes
pagenum: 722; title: Selection Sorts
pagenum: 722; title: Exchange Sorts
pagenum: 725; title: Insertion Sorts
pagenum: 728; title: Evaluation of These Sorting Schemes
pagenum: 730; title: Indirect Sorting
pagenum: 731; title: Quick Quiz 13.1
pagenum: 732; title: Exercises 13.1
pagenum: 733; label: 13.2
title: Heaps, Heapsort, and Priority Queues
pagenum: 735; title: Heaps
pagenum: 736; title: Basic Heap Operations
pagenum: 737; title: Heapsort
pagenum: 741; title: Heap Algorithms in STL
pagenum: 745; title: Heaps and Priority Queues
pagenum: 748; title: Quick Quiz 13.2
pagenum: 751; title: Exercises 13.2
pagenum: 752; label: 13.3
title: Quicksort
pagenum: 753; title: The Split Operation
pagenum: 754; title: Quicksort
pagenum: 757; title: Improvements
pagenum: 760; title: Quick Quiz 13.3
pagenum: 760; title: Exercises 13.3
pagenum: 761; label: 13.4
title: Mergesort
pagenum: 762; title: Merging Lists
pagenum: 762; title: Binary Mergesort
pagenum: 764; title: Natural Mergesort
pagenum: 766; title: Quick Quiz 13.4
pagenum: 769; title: Exercises 13.4
pagenum: 769; label: 13.5
title: Radix Sort
pagenum: 770; title: Exercises 13.5
pagenum: 773; title: Summary
pagenum: 774; title: Chapter Notes
pagenum: 774; title: Programming Pointers
pagenum: 774; title: ADT Tips
pagenum: 775; title: Programming Problems
pagenum: 775; label: 14
title: OOP and ADTs
pagenum: 779; label: 14.1
title: A Brief History and Overview of OOP and ADTs
pagenum: 780; title: Encapsulation
pagenum: 781; title: Inheritance
pagenum: 781; title: Polymorphism and Dynamic Binding
pagenum: 783; title: Quick Quiz 14.1
pagenum: 784; label: 14.2
title: Inheritance and Object-Oriented Design
pagenum: 784; title: Example 1: Licenses
pagenum: 786; title: Public, Private, and Protected Sections
pagenum: 789; title: The Form of Derived Classes
pagenum: 790; title: The Is-a, Has-a, and Uses-a Relationships Between Classes
pagenum: 791; title: Quick Quiz 14.2
pagenum: 793; title: Exercises 14.2
pagenum: 793; label: 14.3
title: Building Derived Classes
pagenum: 794; title: Derived Class Constructors
pagenum: 794; title: Accessing Inherited Data Members
pagenum: 794; title: Reusing Operations
pagenum: 795; title: Example: Stacks and Bounded Stacks
pagenum: 797; label: 14.4
title: Case Study: Payroll
pagenum: 801; title: Problem
pagenum: 801; title: Design
pagenum: 802; label: 14.5
title: Polymorphism, Virtual Functions, and ADTs
pagenum: 810; title: Why Polymorphism is Needed: a Binding Problem
pagenum: 810; title: Virtual Functions and Dynamic Binding
pagenum: 812; title: Example 1: Using Handles
pagenum: 816; title: Example 2: Stacks and Bounded Stacks
pagenum: 817; title: Pure Virtual Functions and Abstract Classes
pagenum: 820; title: Quick Quiz 14.5
pagenum: 822; title: Exercises 14.5
pagenum: 823; label: 14.6
title: Case Study: A Heterogeneous Data Structure
pagenum: 823; title: The Need for Virtual Functions
pagenum: 824; title: Summary
pagenum: 828; title: Chapter Notes
pagenum: 828; title: Programming Pointers
pagenum: 828; title: ADT Tips
pagenum: 828; title: Programming Problems
pagenum: 829; label: 15
title: Trees
pagenum: 831; label: 15.1
title: Case Study: Huffman Codes
pagenum: 832; title: Variable-Length Codes
pagenum: 832; title: Immediate Decodability
pagenum: 833; title: Huffman Codes
pagenum: 833; title: Exercises 15.1
pagenum: 838; label: 15.2
title: Tree Balancing: AVL Trees
pagenum: 839; title: Example: A BST of State Abbreviations
pagenum: 840; title: The Basic Rebalancing Rotations
pagenum: 849; title: Quick Quiz 15.2
pagenum: 854; title: Exercises 15.2
pagenum: 854; label: 15.3
title: 2-3-4 Trees, Red-Black Trees, B-Trees, and Other Trees
pagenum: 855; title: 2-3-4 Trees
pagenum: 856; title: Red-Black Trees
pagenum: 863; title: B-Trees
pagenum: 868; title: Representing Trees and Forests as Binary Trees
pagenum: 869; title: Quick Quiz 15.3
pagenum: 872; title: Exercises 15.3
pagenum: 873; label: 15.4
title: Associative Containers in STL — `maps` (optional)
pagenum: 874; title: Quick Quiz 15.4
pagenum: 880; title: Summary
pagenum: 880; title: Chapter Notes
pagenum: 880; title: Programming Pointers
pagenum: 880; title: ADT Tips
pagenum: 880; title: Programming Problems
pagenum: 881; label: 16
title: Graphs and Digraphs
pagenum: 883; label: 16.1
title: Directed Graphs
pagenum: 883; title: Adjacency-Matrix Representation
pagenum: 885; title: Adjacency-List Representation
pagenum: 887; title: Quick Quiz 16.1
pagenum: 888; title: Exercises 16.1
pagenum: 889; label: 16.2
title: Searching and Traversing Digraphs
pagenum: 892; title: Depth-First Search
pagenum: 894; title: Breadth-First Search
pagenum: 896; title: Traversal and Shortest-Path Problems
pagenum: 897; title: NP-Complete Problems
pagenum: 908; title: Quick Quiz 16.2
pagenum: 909; title: Exercises 16.2
pagenum: 909; label: 16.3
title: Graphs
pagenum: 911; title: Adjacency-Matrix and Adjacency-List Representations
pagenum: 912; title: Edge-List Representation
pagenum: 913; title: Connectedness
pagenum: 913; title: Quick Quiz 16.3
pagenum: 922; title: Exercises 16.3
pagenum: 922; title: Summary
pagenum: 926; title: Chapter Notes
pagenum: 926; title: Programming Pointers
pagenum: 927; title: ADT Tips
pagenum: 927; title: Programming Problems
pagenum: 927; title: Appendixes; label: A
title: ASCII Character Set
pagenum: A1; label: B
title: Number Systems
pagenum: B1; label: C
title: Basic C++
pagenum: C1; label: C.1
title: C++ Program Structure
pagenum: C1; label: C.2
title: Compiler Directives
pagenum: C2; label: C.3
title: Standard Libraries
pagenum: C2; label: C.4
title: Comments
pagenum: C5; label: C.5
title: Identifiers and Keywords
pagenum: C6; label: C.6
title: Fundamental Data Types
pagenum: C9; label: C.7
title: Literals
pagenum: C9; label: C.8
title: Declarations
pagenum: C10; label: C.9
title: Operators and Expressions
pagenum: C10; label: C.10
title: Control Structures
pagenum: C16; label: C.11
title: Functions
pagenum: C22; label: C.12
title: Lifetimes, Scopes, and Namespaces
pagenum: C28; label: C.13
title: Files
pagenum: C30; label: D
title: Other C++ Features
pagenum: D1; label: D.1
title: Stream Operations
pagenum: D1; label: D.2
title: String Operations
pagenum: D5; label: D.3
title: Exceptions
pagenum: D14; label: D.4
title: More About Function Templates
pagenum: D17; label: D.5
title: Other Applications of Pointers
pagenum: D19; label: E
title: From Java to C++
pagenum: E1; label: E.1
title: Program Structure
pagenum: E1; label: E.2
title: using and Compiler Directives
pagenum: E1; label: E.3
title: Input and Output (§C.9, §C.13, & §D.1)
pagenum: E2; label: E.4
title: Data Types
pagenum: E5; label: E.5
title: Variables and Constants
pagenum: E6; label: E.6
title: Functions
pagenum: E7; label: E.7
title: Operator Overloading
pagenum: E9; label: E.8
title: Things the Same in Both C++ and Java
pagenum: E10; label: E.9
title: More Differences Between C++ and Java
pagenum: E11; label: F
title: Answers to Quick Quizzes
pagenum: F1; title: Index
pagenum: 11