Dictionary of Algorithms and Data Structures 

This site provides hundreds of definitions of algorithms and data structures, and classic problems, including links to implementations, tutorials and origins. Submitted: Sep 17, 2003

A Faster Sorting Algorithm 

The Beechick sort algorithm is two to three times faster than quick sort. Most significant digit radix sort. Submitted: Oct 07, 2003

Data Structures and Algorithms with ObjectOriented Design Patterns in C++ 

This book is about the fundamentals of data structures and algorithmsthe basic elements from which large and complex software artifacts are built. This book also illustrates objectoriented design and it promotes the use of common, objectoriented design patterns. The algorithms and data structures in the book are presented in the C++ programming language. Submitted: Aug 13, 2004

Btree 

These routines implement a BTree data structure. I developed most of this code using Introduction to Algorithms by Thomas H. Cormen, Charles E. Leiserson and Ronald L. Rivest. The code implements BTree and not BTree+ that allows you to do an inorder traversal of the data without having to lock each node. Currently the code isn't reentrant, but I plan on making it reentrant. Submitted: Nov 21, 1999

Iterative Methods Library in C++ 

A C++ template library of modern iterative methods for solving both symmetric and nonsymmetric linear systems of equations. The algorithms are fully templated in that the same source code works for dense, sparse, and distributed matrices. Solution methods include Richardson iteration, conjugate gradient (CG), Chebyshev iteration, CG squared, BiCG, BiCG stabilized, generalized minimum residual (GMRES), and quasiminmal residual without lookahead (QMR). A user's manual is available in PostScript format. Submitted: Jan 09, 2000

Wayne's Little Data Structures and Algorithms Library 

The algorithms in libwayne are by no means original. Many of them are taken verbatim from textbooks on data structures and algorithms, and I simply translated them into C. They include efficient and correct routines for priority queues, eventdriven simulations, queues, stacks, binary trees, sets of integers, graphs (the nodeedge kind), some combinatorics routines, ODE integration routines, a simple statistics package, and a matrixvector library. Many of the routines (heap, stack, queue, bintree) can work with arbitrary objects, not just integers. Comparisons are done with pointers to comparison functions, similar to ANSI C's standard qsort. Submitted: Jul 31, 1999

Data Structure for C 

Flexible Simple Data Structure for C. Submitted: Dec 08, 2005

STL  Algorithm Datasheets 

This site contains all kinds of algorithms for working with data sheets. Among the categories are: Nonmutating sequence operations, Mutating sequence operations, Sorting and related operations, Generalized numeric operatioms and algorithm animations. Submitted: Dec 20, 1999

C++ AVL Tree Template 

An AVL Tree template that treats the AVL tree nodes as abstract data structures, manupulated using abstract "handles". The template does no memory management of nodes, and places few restrictions on how the memory management can be done. Suitible for systems/kernellevel programming and embedded systems programming. Submitted: Oct 11, 2002

Fibonacci Heap 

The fib package is an implementation of a Fibonacci Heap. A Fibonacci Heap is a very efficient heap. The cost of an insert is O(1), and the amortized cost of an extract minimum is O(lgn). You can extract an already inserted item out of order in O(lgn). The way it does this is by delaying the organization of the items until you extract. Submitted: Nov 21, 1999

The Stony Brook Algorithm Repository 

This WWW page is intended to serve as a comprehensive collection of algorithm implementations for over seventy of the most fundamental problems in combinatorial algorithms. The problem taxonomy, implementations, and supporting material are all drawn from my book The Algorithm Design Manual. Since the practical person is more often looking for a program than an algorithm, we provide pointers to solid implementations of useful algorithms, when they are available. Submitted: Jan 18, 1998

Pointers, References and Values 

Passing parameters, returning results, and storing member variables with musings on good C++ style. Submitted: Feb 10, 2003

Turing Machine (C++ Implementation) 

The C++program simulates a Turing Machine (TM). TM is defined by input files : metafile, states file, alphabet file, transition file, input word(s) file(s).Each row of metafile contains data related to some Turing machine (number of tapes, names of states file, alphabet file, transition file, input word(s) file(s)). States file contains list of initial, halting and internal states. Alphabet contains list of empty, input and internal symbols. Each row of transition contains some transition rule. Each row of input word(s) contains input word for some tape. A Turing Machine example (Recognition of Palindromes) from 'The Design and Analysis of Computer Algorithms [1976]' by A.V.Aho, J.E.Hopcroft, J.D.Ullman (See examples 1.8, 1.9) is used as a demo sample of Turing Machine. Submitted: Dec 09, 2002

STL Tutorial written by Jak Kirman's 

Jak Kirman's (self described) "A modest STL tutorial" is archived on this page and was rescued from another site because two other copies of it on the web were falling into disrepair. The tutorial provides STL examples, STL components and the philosophy of STL. Code samples and diagrams are provided in this excellent tutorial designed for introductory OOP programmers. Submitted: Jan 02, 2002

Insertion for arrays 

Insertion algorithm for arrays (C source available). Submitted: Dec 09, 1999

Skiplist 

You may have read about how much faster and better skiplists are over normal binary trees. After reading about skiplists, I immediately had to go out and do some performance testing as people were reporting that skiplists used less memory and performed better than binary trees. I had already writen a BTree library, so I went and looked at various skiplist implementations. After none of them being easy to use, I decided to write my own implementation. Submitted: Nov 21, 1999

SoPlex 

The Sequential Objectoriented sim PLEX class library is a C++ library of primal and dual simplex algorithms for solving linear programming problems. It consists of elementary classes for general purposes, linear algebra classes providing basic data types for regular and sparse linear algebra computations, and algorithmic classes implementing a wide variety of algorithms for solving numerical problems and subproblems. The elementary classes include Array, CmdLine, DataArray, DataHashTable, DataSet, IdElement, IdList, IsElement, IsList, NameSet, Random, and Timer classes as well as classes for data objects and sorting functions. The linear algebra classes include those for dynamic index sets, dynamic sparse vectors, dynamic vectors, index sets, LP columns, sets of LP columns, sets of LP rows, semisparse vectors, parts of semisparse vectors, sparse vectors, sparse vector sets, sparse unit vectors, vectors with updates, and dense vectors. Submitted: Jan 11, 2000

C AVL Tree "Generic Package" 

Two C header files that use the C Preprocessor to define code for the AVL tree data structure in a generic and reusable way. The AVL tree nodes are treated as abstract data structures, and manupulated using abstract "handles". The generic code does no memory management of nodes, and places few restrictions on how the memory management can be done. Suitible for systems/kernellevel programming and embedded systems programming. Submitted: Oct 11, 2002

LFC 

LFC is a general C++ class library/framework, trying to provide OO abstractions for various data structures and algorithms. Submitted: Jan 02, 2002

Insertion for lists 

Searching algorithms  Insertion for lists (C source available). Submitted: Dec 09, 1999

CXSC 

This is a tool for the development of numerical algorithms delivering highly accurate and automatically verified results. It provides a large number of predefined numerical data types and operators. These types are implemented as C++ classes. Thus, CXSC allows highlevel programming of numerical applications in C and C++. The CXSC package is available for many computers with a C++ compiler translating the AT&T language standard 2.0. Submitted: Jan 19, 2000

Stochastic Differential Equation Software 

We retail software for numerical solution of systems of stochastic differential equations such as arise in physics, engineering and mathematical finance. We provide free trials and other free programs. Submitted: Mar 19, 2007

