Synopses & Reviews
In this second edition of his successful book, experienced teacher and author Mark Allen Weiss continues to refine and enhance his innovative approach to algorithms and data structures. Written for the advanced data structures course, this text highlights theoretical topics like abstract data types and the efficiency of algorithms, as well as performance and running time. This edition also includes a new chapter on advanced data structures and material on the Standard Template Library that conforms to the new standard. In addition, all code has been updated and tested on multiple platforms and conforms to the ANSI ISO Final Draft standard. Before covering algorithms and data structures, the author provides a brief introduction to C++ for programmers unfamiliar with the language. All of the source code will be available over the Internet. Dr. Weiss also distinguishes the book with his clear, friendly writing style, logical organization of topics, and extensive use of figures and examples that show the successive stages of an algorithm.
TABLE OF CONTENTS:
INTRODUCTION
What's the Book About? x Mathematics Review x A Brief Introduction to Recursion x C++ Classes x C++ Details x Templates x Using Matrices
ALGORITHM ANALYSIS
Mathematical Background x Model x What to Analyze x Running Time Calculations
LISTS, STACKS, AND QUEUES
Abstract Data Types (ADTs) x The List ADT x The Stack ADT x The Queue
ADT TREES
Preliminaries x Binary Trees x The Search Tree ADT: Binary Search Trees x AVL Trees x Splay Trees x Tree Traversals (Revisited) x B-Trees
HASHING
General Idea x Hash Function x Separate Chaining x Open Addressing x Rehashing x Extendible Hashing
PRIORITY QUEUES (HEAPS)
Model x Simple Implementations x Binary Heap x Applications of Priority Queues x d-heaps x Leftist Heaps x Skew Heaps x Binomial Queues
SORTING
Preliminaries x Insertion Sort x A Lower Bound for Simple Sorting Algorithms x Shellsort x Heapsort x Mergesort x Quicksort x Sorting Large Structures x A General Lower Bound for Sorting x Bucket Sort x External Sorting
THE DISJOINT SET ADT
Equivalence Relations x The Dynamic Equivalence Problem x Basic Data Structure x Smart Union Algorithms x Path Compression x Worst Case for Union-by Rank and Path Compression x An Application
GRAPH ALGORITHMS
Definitions x Topological Sort x Shortest-Path Algorithms x Network Flow Problems x Minimum Spanning Tree x Applications of Depth-First Search x Introduction to NP-Completeness
ALGORITHM DESIGN TECHNIQUES
Greedy Algorithms x Divide and Conquer x Dynamic Programming x Randomized Algorithms x Backtracking Algorithms
AMORTIZED ANALYSIS
An Unrelated Puzzle x Binomial Queues x Skew Heaps x Fibonacci Heaps x Splay Trees
ADVANCED DATA STRUCTURES AND IMPLEMENTATION
Top-Down Splay Trees x Red Black Trees x Deterministic Skip Lists x AA-Trees x Treaps x k-d Trees x Pairing Heaps
APPENDIX A: THE STANDARD TEMPLATE LIBRARY
Introduction x Basic STL Concepts x Unordered Sequences: vector and list x Sets x Maps x Example: Generating a Concordance x Example: Shortest Path Calculation
APPENDIX B: VECTOR AND STRING CLASSES
vector Class x string Class
Synopsis
Advanced Data Structures/Algorithms C++
Data Structures and Algorithm Analysis in C++, 3/e
Mark Allen Weiss, Florida International University
ISBN : 0-321-37531-9
Mark Allen Weiss teaches readers to reduce time constraints and develop programs efficiently by analyzing an algorithm’s feasibility before it is coded. His innovative approach to advanced algorithms and data structures simultaneously develops sound algorithm analysis and programming skills.
The Third Edition features a full C++ language update and incorporation of the Standard Template Library. There is new treatment of lists, stacks, queues, and trees, and an entire chapter dedicated to amortized analysis and advanced data structures such as the Fibonacci heap.
Highlights of the Third Edition
• All code has been updated and tested to ensure compliance with the ANSI/ISO C++ standards
• Standard Template Library fully incorporated throughout the text
• Completely revised coverage of lists, stacks, and queues in Chapter 3
• Readability enhanced by fresh interior design with new figures and examples
• End-of-chapter exercises, ranked by difficulty, reinforce key chapter concepts
Visit aw.com/computing for more information about Addison-Wesley computing books.
Synopsis
' In this text, readers are able to look at specific problems and see how careful implementations can reduce the time constraint for large amounts of data from several years to less than a second. Class templates are used to describe generic data structures and first-class versions of vector and string classes are used. Included is an appendix on a Standard Template Library (STL). This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amount of efficiency. Readers should have some knowledge of intermediate programming, including topics as object-based programming and recursion, and some background in discrete math.'
Table of Contents
Chapter 1 - Introduction
1.1 What’s the Book About?
1.2 Mathematics Review
1.3 A Brief Introduction to Recursion
1.4 C++ Classes
1.5 C++ Details
1.6 Templates
1.7 Using Matrices
Chapter 2 - Algorithm Analysis
2.1 Mathematical Background
2.2 Model
2.3 What to Analyze
2.4 Running Time Calculations
Chapter 3 - Lists, Stacks, and Queues
3.1 Abstract Data Types (ADTs)
3.2 The List ADT
3.3 vector and list in the STL
3.4 Implementation of vector
3.5 Implementation of list
3.6 The Stack ADT
3.7 The Queue ADT
Chapter 4 - Trees
4.1 Preliminaries
4.2 Binary Trees
4.3 The Search Tree ADT—Binary Search Trees
4.4 AVL Trees
4.5 Splay Trees
4.6 Tree Traversals (Revisited)
4.7 B-Trees
4.8 Sets and Maps in the Standard Library
Chapter 5 - Hashing
5.1 General Idea
5.2 Hash Function
5.3 Separate Chaining
5.4 Hash Tables Without Linked Lists
5.5 Rehashing
5.6 Hash Tables in the Standard Library
5.7 Extendible Hashing
Chapter 6 - Priority Queues (Heaps)
6.1 Model
6.2 Simple Implementations
6.3 Binary Heap
6.4 Applications of Priority Queues
6.5 d-Heaps
6.6 Leftist Heaps
6.7 Skew Heaps
6.8 Binomial Queues
6.9 Priority Queues in the Standard Library
Chapter 7 - Sorting
7.1 Preliminaries
7.2 Insertion Sort
7.3 A Lower Bound for Simple Sorting Algorithms
7.4 Shellsort
7.5 Heapsort
7.6 Mergesort
7.7 Quicksort
7.8 Indirect Sorting
7.9 A General Lower Bound for Sorting
7.10 Bucket Sort
7.11 External Sorting
Chapter 8 - The Disjoint Set Class
8.1 Equivalence Relations
8.2 The Dynamic Equivalence Problem
8.3 Basic Data Structure
8.4 Smart Union Algorithms
8.5 Path Compression
8.6 Worst Case for Union-by-Rank and Path Compression
8.7 An Application
Chapter 9 - Graph Algorithms
9.1 Definitions
9.2 Topological Sort
9.3 Shortest-Path Algorithms
9.4 Network Flow Problems
9.5 Minimum Spanning Tree
9.6 Applications of Depth-First Search
9.7 Introduction to NP-Completeness
Chapter 10 - Algorithm Design Techniques
10.1 Greedy Algorithms
10.2 Divide and Conquer
10.3 Dynamic Programming
10.4 Randomized Algorithms
10.5 Backtracking Algorithms
Chapter 11 - Amortized Analysis
11.1 An Unrelated Puzzle
11.2 Binomial Queues
11.3 Skew Heaps
11.4 Fibonacci Heaps
11.5 Splay Trees
Chapter 12 - Advanced Data Structures and Implementation
12.1 Top-Down Splay Trees
12.2 Red-Black Trees
12.3 Deterministic Skip Lists
12.4 AA-Trees
12.5 Treaps
12.6 k-d Trees
12.7 Pairing Heaps
Appendix A - Separate Compilation Of Class Templates