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).
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
BinarySearchTree.h: Binary search tree
TestBinarySearchTree.cpp: Test program for binary search tree
TestAvlTree.cpp: Test program for AVL trees
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
TestBinaryHeap.cpp: Test program for binary heaps
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_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
TestTreap.cpp: Test program for treap
TestAATree.cpp: Test program for AA-trees
KdTree.cpp: Implementation and test program for k-d trees
TestPairingHeap.cpp: Test program for pairing heaps
MemoryCell.h: MemoryCell class interface (Appendix)