Source Code for Data Structures and Algorithm Analysis in C++ (Third Edition)

Here is the source code for Data Structures and Algorithm Analysis in C++ (Third Edition), by Mark Allen Weiss. The materials here are copyrighted.

I have successfully compiled and tested the programs under Visual Dot Net. There are not too many unusual features, so it should work on compilers that support exceptions. However, this code is from 2005 so there might be minor fixes needed here and there to work with current compilers.
Fourth edition code, using C++11 (needs a very modern compiler).

Complete Bundle

Available soon

Individual Files

matrix.h: Simple matrix class

dsexceptions.h: Simple exception classes

Fig01_02.cpp: A simple recursive routine with a test program

Fig01_03.cpp: An example of infinite recursion

Fig01_04.cpp: Recursive routine to print numbers, with a test program

Fig01_05.cpp: Simplest IntCell class, with a test program

Fig01_06.cpp: IntCell class with a few extras, with a test program

IntCell.h: IntCell class interface (Fig 1.7)

IntCell.cpp: IntCell class implementation (Fig 1.8)

TestIntCell.cpp: IntCell test program (Fig 1.9)

Fig01_10.cpp: Illustration of using the vector class

Fig01_11.cpp: Dynamically allocating an IntCell object (lame)

BuggyIntCell.cpp: Buggy IntCell class implementation (Figs 1.14 and 1.15)

Fig01_16.cpp: IntCell class with pointers and Big Three

FindMax.cpp: Function template FindMax (Figs 1.17 and 1.18)

Fig01_19.cpp: MemoryCell class template without separation

Fig01_23.cpp: Using function objects: Case insensitive string comparison

RefReturn.cpp: Return by reference

MaxSumTest.cpp: Various maximum subsequence sum algorithms

Fig02_09.cpp: Test program for binary search

Fig02_10.cpp: Euclid's algorithm, with a test program

Fig02_11.cpp: Recursive exponentiation algorithm, with a test program

RemoveEveryOtherItem.cpp: Remove every other item in a collection

Vector.h: Vector class

List.h: List class

BinarySearchTree.h: Binary search tree

TestBinarySearchTree.cpp: Test program for binary search tree

AvlTree.h: AVL tree

TestAvlTree.cpp: Test program for AVL trees

mapDemo.cpp: Map demos

WordLadder.cpp: Word Ladder Program and Word Changing Utilities

SeparateChaining.h: Header file for separate chaining

SeparateChaining.cpp: Implementation for separate chaining

TestSeparateChaining.cpp: Test program for separate chaining hash tables

QuadraticProbing.h: Header file for quadratic probing hash table

QuadraticProbing.cpp: Implementation for quadratic probing hash table

TestQuadraticProbing.cpp: Test program for quadratic probing hash tables

BinaryHeap.h: Binary heap

TestBinaryHeap.cpp: Test program for binary heaps

LeftistHeap.h: Leftist heap

TestLeftistHeap.cpp: Test program for leftist heaps

BinomialQueue.h: Binomial queue

TestBinomialQueue.cpp: Test program for binomial queues

TestPQ.cpp: Priority Queue Demo

Sort.h: A collection of sorting and selection routines

TestSort.cpp: Test program for sorting and selection routines

DisjSets.h: Header file for disjoint sets algorithms

DisjSets.cpp: Efficient implementation of disjoint sets algorithm

TestFastDisjSets.cpp: Test program for disjoint sets algorithm

WordLadder.cpp: Word Ladder Program and Word Changing Utilities

Fig10_38.cpp: Simple matrix multiplication algorithm with a test program

Fig10_40.cpp: Algorithms to compute Fibonacci numbers

Fig10_43.cpp: Inefficient recursive algorithm (see text)

Fig10_45.cpp: Better algorithm to replace fig10_43.c (see text)

Fig10_46.cpp: Dynamic programming algorithm for optimal chain matrix multiplication, with a test program

Fig10_53.cpp: All-pairs algorithm, with a test program

Random.h: Header file for random number class

Random.cpp: Implementation for random number class

TestRandom.cpp: Test program for random number class

Fig10_62.cpp: Randomized primality testing algorithm, with a test program

SplayTree.h: Top-down splay tree

TestSplayTree.cpp: Test program for splay trees

DSL.h: Deterministic skip list

TestDSL.cpp: Test program for determinstic skip lists

RedBlackTree.h: Top-down red black tree

TestRedBlackTree.cpp: Test program for red black trees

Treap.h: Treap

TestTreap.cpp: Test program for treap

AATree.h: AA-tree

TestAATree.cpp: Test program for AA-trees

KdTree.cpp: Implementation and test program for k-d trees

PairingHeap.h: Pairing heap

TestPairingHeap.cpp: Test program for pairing heaps

MemoryCell.h: MemoryCell class interface (Appendix)

MemoryCell.cpp: MemoryCell class implementation (Appendix)

TestMemoryCell.cpp: MemoryCell test program (Appendix)