Other Home Pages of Interest

Source Code

Complete Ada95 code is available. Click here for the code in compressed tar format.

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

Here is each file.

fig1_2.adb: a simple recursive routine with a test program

fig1_3.adb: an example of infinite recursion

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

fig1_5.adb: program that counts the number of lines in a file

complex_numbers.ads: package specification for complex numbers

complex_numbers.adb: package implementation for complex numbers

complex_numbers_test.adb: test program for complex numbers

error_pack.ads: package specification for error routines

error_pack.adb: package implementation for error routines

fig2_5.adb: Cubic maximum subsequence sum algorithm

fig2_6.adb: Quadratic maximum subsequence sum algorithm

fig2_7.adb: O( n log n ) maximum subsequence sum algorithm

fig2_8.adb: Linear maximum subsequence sum algorithm

fig2_9.adb: Test program for binary search

binary_search.ads: Specification of generic function Binary_Search

binary_search.adb: Implementation of generic function Binary_Search

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

fig2_11.adb: Recursive exponentiation algorithm, with a test program

linked_lists.ads: Package specification for linked list

linked_lists.adb: Package implementation for linked list

linked_lists_test.adb: Test program for linked list package

polynomials.ads: Package specification for polynomial

polynomials.adb: Package implementation for polynomial

polynomials_test.adb: Test program for polynomials

cursor_lists.ads: Package specification for cursor linked list

cursor_lists.adb: Package implementation for cursor linked list

stack_array.ads: Package specification for stack: array version

stack_array.adb: Package implementation for stack: array version

stack_list.ads: Package specification for stack: list version

stack_list.adb: Package implementation for stack: list version

stack_test.adb: Test program for stacks

queue_array.ads: Package specification for queue: array version

queue_array.adb: Package implementation for queue: array version

queue_test.adb: Test program for queues

search_tree_package.ads: Package specification for binary search tree

search_tree_package.adb: Package implementation for binary search tree

search_tree_package_test.adb: Test program for binary search tree

search_avl.ads: Package specification for AVL tree

search_avl.adb: Package implementation for AVL tree

search_avl_test.adb: Test program for AVL trees

open_hash_table.ads: Package specification for separate chaining

open_hash_table.adb: Package implementation for separate chaining

open_hash_table_test.adb: Test program for separate chaining

closed_hash_table.ads: Package specification for quadratic probing hash table

closed_hash_table.adb: Package implementation for quadratic probing hash table

closed_hash_table_test.adb: Test program for quadratic probing hash tables

expanding_closed_hash_table.ads: Package specification for quadratic probing hash table with rehashing

expanding_closed_hash_table.adb: Package implementation for quadratic probing hash table with rehashing

binary_heap.ads: Package specification for binary heap

binary_heap.adb: Package implementation for binary heap

leftist_heap.ads: Package specification for leftist heap

leftist_heap.adb: Package implementation for leftist heap

priority_queue_test.adb: Test program for priority queues

sorters.ads: Package specification for a collection of sorting and selection routines

sorters.adb: Package implementation for a collection of sorting and selection routines

sort.adb: A test program for the Sorters package

disjoint_sets.ads: Package specification for disjoint sets

disjoint_sets.adb: Package implementation for disjoint sets

disjoint_sets_test.adb: A test program for disjoint sets

fig10_38.adb: Simple matrix multiplication algorithm with a test program

fig10_40.adb: Algorithms to compute Fibonacci numbers

fig10_43.adb: Inefficient recursive algorithm (see text)

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

fig10_46.adb: Dynamic programming algorithm for optimal chain matrix multiplication, with a test program

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

random_numbers.ads: Package specification for uniform random numbers

random_numbers.adb: Package implementation for uniform random numbers

random_numbers_test.adb: Test program for random number package

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

tic_tac_alpha.adb: Tic-tac-toe with alpha beta pruning, with a marginal test program

splay_tree_package.ads: Package specification for top-down splay tree

splay_tree_package.adb: Package implementation for top-down splay tree

splay_test.adb: Test program for splay trees

red_black_tree_package.ads: Package specification for top-down red black tree

red_black_tree_package.adb: Package implementation for top-down red black tree

red_black_test.adb: Test program for red black trees

aa_tree_package.ads: Package specification for AA-tree

aa_tree_package.adb: Package implementation for AA-tree

aa_test.adb: Test program for AA-trees

pairing_heap.ads: Package specification for pairing heap

pairing_heap.adb: Package implementation for pairing heap

pair_test.adb: Test program for pairing heaps