Click here for the code in compressed tar format. Here's the uncompressed version.

Here is a listing of source code on a chapter-by-chapter basis. This is in a format suitable for printing out. Click on the chapter of interest: 1 2 3 4 5 6 7 8 10 12 all

Here is each file.

**fatal.h**: macros for fatal errors

**fig1_2.c**: a simple recursive routine with a test program

**fig1_3.c**: an example of infinite recursion

**fig1_4.c**: recursive routine to print numbers, with a test program

**max_sum.c**: Various maximum subsequence sum algorithms

**fig2_9.c**: Test program for binary search

**fig2_10.c**: Euclid's algorithm, with a test program

**fig2_11.c**: Recursive exponentiation algorithm, with a test program

**list.h**: Header file for linked list

**list.c**: Implementation for linked list

**testlist.c**: Test program for linked list package

**cursor.h**: Header file for cursor linked list

**cursor.c**: Implementation for cursor linked list

**testcurs.c**: Test program for cursor implementation of linked lists

**stackar.h**: Header file for stack: array version

**stackar.c**: Implementation for stack: array version

**teststka.c**: Test program for (array-based) stacks

**stackli.h**: Header file for stack: list version

**stackli.c**: Implementation for stack: list version

**teststkl.c**: Test program for (list-based) stacks

**queue.h**: Header file for queue: array version

**queue.c**: Implementation for queue: array version

**testque.c**: Test program for queues

**tree.h**: Header file for binary search tree

**tree.c**: Implementation for binary search tree

**testtree.c**: Test program for binary search tree

**avltree.h**: Header file for AVL tree

**avltree.c**: Implementation for AVL tree

**testavl.c**: Test program for AVL trees

**hashfunc.c**: Some hash functions for strings

**hashsep.h**: Header file for separate chaining

**hashsep.c**: Implementation for separate chaining

**testhash.c**: Test program for hash tables

**hashquad.h**: Header file for quadratic probing hash table

**hashquad.c**: Implementation for quadratic probing hash table

**binheap.h**: Header file for binary heap

**binheap.c**: Implementation for binary heap

**testheap.c**: Test program for binary heaps

**leftheap.h**: Header file for leftist heap

**leftheap.c**: Implementation for leftist heap

**testleft.c**: Test program for leftist heaps

**binomial.h**: Header file for binomial queue

**binomial.c**: Implementation for binomial queue

**testbin.c**: Test program for binomial queues

**sort.c**: A collection of sorting and selection routines

**disjsets.c**: Disjoint sets algorithms, with test program

**fig10_38.c**: Simple matrix multiplication algorithm with a test program

**fig10_40.c**: Algorithms to compute Fibonacci numbers

**fig10_43.c**: Inefficient recursive algorithm (see text)

**fig10_45.c**: Better algorithm to replace fig10_43.c (see text)

**fig10_53.c**: All-pairs algorithm, with a test program

**fig10_55.c**: Implementation and test program for uniform random numbers

**fig10_62.c**: Randomized primality testing algorithm, with a test program

**splay.h**: Header file for top-down splay tree

**splay.c**: Implementation for top-down splay tree

**testsply.c**: Test program for splay trees

**dsl.h**: Header file for deterministic skip list

**dsl.c**: Implementation for deterministic skip list

**testdsl.c**: Test program for determinstic skip lists

**redblack.h**: Header file for top-down red black tree

**redblack.c**: Implementation for top-down red black tree

**testrb.c**: Test program for red black trees

**treap.h**: Header file for treap

**treap.c**: Implementation for treap

**testtrp.c**: Test program for treap

**aatree.h**: Header file for AA-tree

**aatree.c**: Implementation for AA-tree

**testaa.c**: Test program for AA-trees

**kdtree.c**: Implementation and test program for k-d trees

**pairheap.h**: Header file for pairing heap