Algorithms, Data Structures, and Problem Solving with C++
Résumé
Algorithms, Data Structures, and Problem Solving with C++ is the first CS2 textbook that clearly separates the interface and implementation of data structures. The interface and running time of data structures are presented first, and students have the opportunity to use the data structures in a host of practical examples before being introduced to the implementations. This unique approach enhances the ability of students to think abstractly.
Features
- Retains an emphasis on data structures and algorithm design while using C++ as the language of implementation.
- Reinforces abstraction by discussing interface and implementations of data structures in different parts of the book.
- Incorporates case studies such as expression evaluation, cross-reference generation, and shortest path calculations.
- Provides a complete discussion of time complexity and Big-Oh notation early in the text.
- Gives the instructor flexibility in choosing an appropriate balance between practice, theory, and level of C++ detail. Contains optional advanced material in Part V.
- Covers classes, templates, and inheritance as fundamental concepts in sophisticated C++ programs.
- Contains fully functional code that has been tested on g++2.6.2, Sun 3.0.1, and Borland 4.5 compilers. Code is integrated into the book and also available by ftp December 1995.
- Includes end-of-chapter glossaries, summaries of common errors, and a variety of exercises.
TABLE OF CONTENTS
Part I: Objects and C++
- Chapter 1: Pointers, Arrays, and Structures
- What Are Pointers, Arrays, and Structures?
- Pointer Syntax in C++
- Arrays
- Dynamic Allocation of Arrays: new[] and delete[]
- Memory Exhaustion
- Pointer Arithmetic and Pointer Hopping
- Reference Variables
- Structures
- Chapter 2: Objects and Classes
- What Is Object-Oriented Programming?
- A Simple Example
- A More Substantial Class: the Bit Array
- Exploring More Details of the Class Interface
- Additional C++ Class Features
- Implementing a Class String
- Recap: What Gets Called and What Are the Defaults?
- Separate Compilation
- Chapter 3: Templates
- What Is a Template?
- Template Functions
- Template Classes
- Fancy Templates
- Bugs Associated with Templates
- Chapter 4: Inheritance
- What Are Polymorphism and Inheritance?
- A Derived Class: BoundedVector
- Public, Private, and Protected Members and Inheritance
- Static and Dynamic Binding
- Constructors and Destructors: Virtual or not Virtual?
- Abstract Classes: A Shape Class
- Multiple Inheritance
Part II: Algorithms and Building Blocks
- Chapter 5: Algorithm Analysis
- What Is Algorithm Analysis?
- Examples of Algorithm Running Times
- The Maximum Contiguous Subsequence Sum Problem
- General Big-Oh Analysis
- The Logarithm
- Static Searching Problem
- Checking an Algorithm Analysis
- Limitations of Big-Oh Analysis
- Chapter 6: Data Structures
- Why Do We Need Data Structures?
- Stacks
- Queues
- Linked Lists
- General Trees
- Binary Search Trees
- Hash Tables
- Priority Queues
- Chapter 7: Recursion
- What Is Recursion?
- Background: Proofs by Mathematical Induction
- Basic Recursion
- Numerical Applications
- Divide and Conquer
- Dynamic Programming
- Backtracking
- Chapter 8: Sorting Algorithms
- Why Is Sorting Important?
- Preliminaries
- Analysis of Insertion Sort and Other Simple Sorts
- Shellsort
- Mergesort
- Quicksort
- Quickselect
- A Lower Bound for Sorting
- Indirect Sorting
- Chapter 9: Randomization
- Why Do We Need Random Numbers?
- Random Number Generators
- Nonuniform Random Numbers 9.4 : Generating a Random Permutation
- Randomized Algorithms
- Randomized Primality Testing
Part III: Applications
- Chapter 10: Fun and Games
- Word Search Puzzles
- The Game of Tic-Tac-Toe
- Chapter 11: Stacks and Compilers
- Balanced Symbol Checker
- A Simple Calculator
- Chapter 12: Utilities
- File Compression
- A Cross-Reference Generator
- Chapter 13: Simulation
- The Josephus Problem
- Event-Driven Simulation
- Chapter 14: Graphs and Paths
- Definitions
- Unweighted Shortest Path Problem
- Positive Weighted Shortest Path Problem
- General Weighted Shortest Path Problem
- Path Problems in Acyclic Graphs
Part IV: Implementations
- Chapter 15: Stacks and Queues
- Dynamic Array Implementations
- Linked List Implementations
- Comparison of the Two Methods
- Double-Ended Queues
- Chapter 16: Linked Lists
- Basic Ideas
- C++ Implementation
- Doubly Linked Lists and Circular Linked Lists
- Sorted Linked Lists
- Chapter 17: Trees
- General Trees
- Binary Trees
- Recursion and Trees
- Tree Traversal: Iterator Classes
- Chapter 18: Binary Search Trees
- Basic Ideas
- Order Statistics
- Analysis of Binary Search Tree Operations
- AVL Trees
- Red Black Trees
- AA Trees
- B-Trees
- Chapter 19: Hash Tables
- Basic Ideas
- Hash Function
- Linear Probing
- Quadratic Probing
- Separate Chaining
- Chapter 20 : A Priority Queue: The Binary Heap
- Basic Ideas
- Implementation of the Basic Operations
- FixHeap: Linear Time Heap Construction
- Advanced Operations: DecreaseKey and Merge
- Internal Sorting: Heapsort
- External Sorting
Part V: Advanced Data Structures
- Chapter 21: Splay Trees
- Self-adjustment and Amortized Analysis
- The Basic Bottom-Up Splay Trees
- Basic Splay Tree Operations
- Analysis of Bottom-Up Splaying
- Top-Down Splay Trees
- Implementation of Top-Down Splay Trees
- Comparison of the Splay Tree with Other Search Trees
- Chapter 22: Merging Priority Queues
- The Skew Heap
- The Pairing Heap
- Chapter 23: The Disjoint Set Class
- Equivalence Relations
- Dynamic Equivalence
- The Quick-Find Algorithm
- The Quick-Union Algorithm
- C++ Implementation
- Worst Case for Union-by-Rank and Path Compression
Appendix A: Basic C++
Appendix B: Operators
Appendix C: Some Library Routines
Appendix D: Modifications for ExceptionsIndex
L'auteur - Mark Allen Weiss
Mark Allen Weiss is a Professor in the School of Computer Science at Florida International University. He received his Ph.D. in Computer Science from Princeton University where he studied under Robert Sedgewick. Dr.Weiss has received FIU's Excellence in Research Award, as well as the Teaching Incentive Program Award, which was established by the Florida Legislature to recognize teaching excellence. Mark Allen Weiss is on the Advanced Placement Computer Science Development Committee. He is the successful author of Algorithms, Data Structures, and Problem Solving with C++ and the series Data Structures and Algorithm Analysis in Pascal, Ada, C, and C++, with Addison-Wesley.
Caractéristiques techniques
PAPIER | |
Éditeur(s) | Addison Wesley |
Auteur(s) | Mark Allen Weiss |
Parution | 15/06/1996 |
Nb. de pages | 820 |
Format | 19,5 x 24 |
Couverture | Relié |
Poids | 1400g |
EAN13 | 9780805316667 |
Avantages Eyrolles.com
Consultez aussi
- Les meilleures ventes en Graphisme & Photo
- Les meilleures ventes en Informatique
- Les meilleures ventes en Construction
- Les meilleures ventes en Entreprise & Droit
- Les meilleures ventes en Sciences
- Les meilleures ventes en Littérature
- Les meilleures ventes en Arts & Loisirs
- Les meilleures ventes en Vie pratique
- Les meilleures ventes en Voyage et Tourisme
- Les meilleures ventes en BD et Jeunesse