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 featuers, so it should work on compilers that support exceptions.
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)