Data Structures, Algorithms, & Applications in Java
Sartaj Sahni

Index of Text Programs

Select a chapter.
Chapter 1
Chapter 2
Chapter 3
Chapter 4
Chapter 5
Chapter 6
Chapter 7
Chapter 8
Chapter 9
Chapter 10
Chapter 11
Chapter 12
Chapter 13
Chapter 14
Chapter 15
Chapter 16
Chapter 17
Chapter 18
Chapter 19
Chapter 20
Chapter 21
Chapter 22

Chapter 1 Programs

Program 1.1 misc/Welcome.java
Program 1.2 misc/IntegerAbc.java
Program 1.3 misc/FloatAbc.java
Program 1.4 misc/NoSwap.java
Program 1.5 misc/IntegerAbcWithException.java
Program 1.6 misc/IntegerAbcWithException.java
Program 1.7 applications/Currency.java
Program 1.8 applications/Currency.java
Program 1.9 applications/Currency.java
Program 1.10 applications/Currency.java
Program 1.11 applications/Currency.java
Program 1.12 applications/Currency.java
Program 1.13 applications/CurrencyAsLong.java
Program 1.14 exceptions/MyInputException.java
Program 1.15 utilities/MyMath.java
Program 1.16 utilities/MyMath.java
Program 1.17 utilities/Computable.java
Program 1.18 misc/GenericAbc.java
Program 1.19 utilities/Operable.java
Program 1.20 wrappers/MyInteger.java
Program 1.21 wrappers/MyInteger.java
Program 1.22 misc/Array1D.java
Program 1.23 misc/NewArray1D.java
Program 1.24 utilities/MyMath.java
Program 1.25 utilities/MyMath.java
Program 1.26 applications/RecursiveSum.java
Program 1.27 applications/Permutation.java
Program 1.28 applications/QuadraticRoots.java
Program 1.29 utilities/MyMath.java


Chapter 2 Programs

Program 2.1 applications/SequentialSearch1.java
Program 2.2 applications/RecursiveSequentialSearch.java
Program 2.3 applications/EvaluatePolynomial.java
Program 2.4 applications/Horner.java
Program 2.5 applications/Rank.java
Program 2.6 applications/RankSort1.java
Program 2.7 applications/SelectionSort.java
Program 2.8 applications/BubbleSort.java
Program 2.9 applications/BubbleSort.java
Program 2.10 applications/Insert.java
Program 2.11 applications/RankSort2.java
Program 2.12 applications/EarlyTerminatingSelectionSort.java
Program 2.13 applications/EarlyTerminatingBubbleSort.java
Program 2.14 applications/InsertionSort1.java
Program 2.15 applications/InsertionSort2.java
Program 2.16 misc/SumStepCount1.java
Program 2.17 misc/SumStepCount2.java
Program 2.18 misc/RecursiveSumStepCount.java
Program 2.19 utilities/MatrixOperations.java
Program 2.20 misc/InefficientPrefixSums.java
Program 2.21 utilities/MatrixOperations.java
Program 2.22 utilities/MatrixOperations.java
Program 2.23 utilities/MatrixOperations.java
Program 2.24 applications/MinMax1.java
Program 2.25 applications/MinMax2.java
Program 2.26 applications/SequentialSearch2.java
Program 2.27 misc/D.java


Chapter 3 Programs

Program 3.1 applications/BinarySearch.java


Chapter 4 Programs

Program 4.1 misc/TimeInsertionSort1.java
Program 4.2 misc/TimeInsertionSort2.java
Program 4.3 misc/TimeInsertionSort4.java
Program 4.4 utilities/MatrixOperations.java


Chapter 5 Programs

Program 5.1 dataStructures/LinearList.java
Program 5.2 dataStructures/LinearListAsAbstractClass.java
Program 5.3 utilities/ChangeArrayLength.java
Program 5.4 dataStructures/ArrayLinearList.java
Program 5.5 dataStructures/ArrayLinearList.java
Program 5.6 dataStructures/ArrayLinearList.java
Program 5.7 dataStructures/ArrayLinearList.java
Program 5.8 dataStructures/ArrayLinearList.java
Program 5.9 dataStructures/ArrayLinearListIterator.java
Program 5.10 dataStructures/ArrayLinearList.java
Program 5.11 dataStructures/ArrayLinearListIterator.java
Program 5.12 dataStructures/ArrayLinearListWithIterator.java
Program 5.13 dataStructures/LinearListAsVectorSubclass.java
Program 5.14 dataStructures/LinearListAsVector.java


Chapter 6 Programs

Program 6.1 dataStructures/ChainNode.java
Program 6.2 dataStructures/Chain.java
Program 6.3 dataStructures/Chain.java
Program 6.4 dataStructures/Chain.java
Program 6.5 dataStructures/Chain.java
Program 6.6 dataStructures/Chain.java
Program 6.7 dataStructures/Chain.java
Program 6.8 dataStructures/Chain.java
Program 6.9 dataStructures/ExtendedLinearList.java
Program 6.10 dataStructures/ExtendedChain.java
Program 6.11 dataStructures/CircularWithHeader.java
Program 6.12 applications/ScoreObject.java
Program 6.13 applications/StudentRecord.java
Program 6.14 applications/BinSort.java
Program 6.15 dataStructures/ChainWithBinSort.java


Chapter 7 Programs

Program 7.1 dataStructures/SimulatedNode.java
Program 7.2 dataStructures/SimulatedSpace1.java
Program 7.3 dataStructures/SimulatedSpace1.java
Program 7.4 dataStructures/SimulatedSpace1.java
Program 7.5 dataStructures/SimulatedCircularList.java
Program 7.6 dataStructures/SimulatedChain.java
Program 7.7 applications/UnionFindFirstSolution.java
Program 7.8 applications/EquivNode.java
Program 7.9 applications/UnionFindSecondSolution.java


Chapter 8 Programs

Program 8.1 misc/IrregularArray.java
Program 8.2 dataStructures/Matrix.java
Program 8.3 dataStructures/Matrix.java
Program 8.4 dataStructures/Matrix.java
Program 8.5 dataStructures/Matrix.java
Program 8.6 dataStructures/Matrix.java
Program 8.7 dataStructures/DiagonalMatrix.java
Program 8.8 dataStructures/DiagonalMatrix.java
Program 8.9 dataStructures/DiagonalMatrix.java
Program 8.10 dataStructures/TridiagonalMatrix.java
Program 8.11 dataStructures/LowerTriangularMatrix.java
Program 8.12 applications/SparseMatrixAsExtendedArrayList.java
Program 8.13 applications/SparseMatrixAsExtendedArrayList.java
Program 8.14 dataStructures/SparseMatrixAsExtendedArrayList.java
Program 8.15 dataStructures/SparseMatrixAsExtendedArrayList.java
Program 8.16 dataStructures/SparseMatrixAsExtendedArrayList.java
Program 8.17 dataStructures/SparseMatrixAsExtendedArrayList.java
Program 8.18 dataStructures/LinkedSparseMatrix.java


Chapter 9 Programs

Program 9.1 dataStructures/Stack.java
Program 9.2 dataStructures/DerivedArrayStack.java
Program 9.3 dataStructures/DerivedArrayStackWithCatch.java
Program 9.4 dataStructures/ArrayStack.java
Program 9.5 dataStructures/LinkedStack.java
Program 9.6 applications/ParenthesisMatching.java
Program 9.7 applications/TowersOfHanoi.java
Program 9.8 applications/TowersOfHanoiShowingStates.java
Program 9.9 applications/RailroadWithStacks.java
Program 9.10 applications/RailroadWithStacks.java
Program 9.11 applications/RailroadWithStacks.java
Program 9.12 applications/RailroadWithStacks.java
Program 9.13 applications/SwitchBox.java
Program 9.14 applications/OfflineEquivalenceClasses.java
Program 9.15 applications/RatInAMaze.java


Chapter 10 Programs

Program 10.1 dataStructures/Queue.java
Program 10.2 dataStructures/ArrayQueue.java
Program 10.3 dataStructures/ArrayQueue.java
Program 10.4 dataStructures/ArrayQueue.java
Program 10.5 dataStructures/LinkedQueue.java
Program 10.6 applications/RailroadWithQueues.java
Program 10.7 applications/RailroadWithQueues.java
Program 10.8 applications/WireRouter.java
Program 10.9 applications/ImageComponents.java
Program 10.10 applications/MachineShopSimulator.java
Program 10.11 applications/MachineShopSimulator.java
Program 10.12 applications/MachineShopSimulator.java
Program 10.13 applications/MachineShopSimulator.java
Program 10.14 applications/MachineShopSimulator.java
Program 10.15 applications/MachineShopSimulator.java
Program 10.16 applications/MachineShopSimulator.java
Program 10.17 applications/MachineShopSimulator.java
Program 10.18 applications/MachineShopSimulator.java
Program 10.19 applications/MachineShopSimulator.java
Program 10.20 applications/MachineShopSimulator.java
Program 10.21 applications/MachineShopSimulator.java


Chapter 11 Programs

Program 11.1 dataStructures/Dictionary.java
Program 11.2 dataStructures/SortedChain.java
Program 11.3 dataStructures/SortedChain.java
Program 11.4 dataStructures/SortedChain.java
Program 11.5 dataStructures/SkipList.java
Program 11.6 dataStructures/SkipList.java
Program 11.7 dataStructures/SkipList.java
Program 11.8 dataStructures/SkipList.java
Program 11.9 dataStructures/SkipList.java
Program 11.10 dataStructures/SkipList.java
Program 11.11 dataStructures/SkipList.java
Program 11.12 dataStructures/SkipList.java
Program 11.13 dataStructures/ConvertString.java
Program 11.14 dataStructures/ConvertString.java
Program 11.15 dataStructures/HashTable.java
Program 11.16 dataStructures/HashTable.java
Program 11.17 dataStructures/HashTable.java
Program 11.18 dataStructures/HashTable.java
Program 11.19 dataStructures/HashChains.java
Program 11.20 applications/Compress.java
Program 11.21 applications/Compress.java
Program 11.22 applications/Compress.java
Program 11.23 applications/Compress.java
Program 11.24 applications/Decompress.java
Program 11.25 applications/Decompress.java
Program 11.26 applications/Decompress.java
Program 11.27 applications/Decompress.java


Chapter 12 Programs

Program 12.1 dataStructures/BinaryTreeNode.java
Program 12.2 dataStructures/BinaryTreeTraversal.java
Program 12.3 dataStructures/BinaryTreeTraversal.java
Program 12.4 dataStructures/BinaryTreeTraversal.java
Program 12.5 dataStructures/BinaryTreeTraversal.java
Program 12.6 applications/InfixForm.java
Program 12.7 dataStructures/BinaryTreeTraversal.java
Program 12.8 dataStructures/BinaryTree.java
Program 12.9 dataStructures/LinkedBinaryTree.java
Program 12.10 dataStructures/LinkedBinaryTree.java
Program 12.11 dataStructures/LinkedBinaryTree.java
Program 12.12 dataStructures/LinkedBinaryTree.java
Program 12.13 applications/PlaceBoosters.java
Program 12.14 applications/PlaceBoosters.java
Program 12.15 applications/UnionFindWithTrees.java
Program 12.16 applications/FastUnionFind.java
Program 12.17 applications/FastUnionFind.java
Program 12.18 applications/FastUnionFind.java


Chapter 13 Programs

Program 13.1 dataStructures/MaxPriorityQueue.java
Program 13.2 dataStructures/MaxHeap.java
Program 13.3 dataStructures/MaxHeap.java
Program 13.4 dataStructures/MaxHeap.java
Program 13.5 dataStructures/MaxHBLT.java
Program 13.6 dataStructures/MaxHBLT.java
Program 13.7 dataStructures/MaxHBLT.java
Program 13.8 applications/HeapSort.java
Program 13.9 applications/LPTSchedule.java
Program 13.10 applications/HuffmanTree.java


Chapter 14 Programs

Program 14.1 dataStructures/WinnerTree.java
Program 14.2 dataStructures/ExtendedCWTree.java
Program 14.3 applications/FirstFit.java


Chapter 15 Programs

Program 15.1 dataStructures/BSTree.java
Program 15.2 dataStructures/IndexedBSTree.java
Program 15.3 dataStructures/BinarySearchTree.java
Program 15.4 dataStructures/BinarySearchTree.java
Program 15.5 dataStructures/BinarySearchTree.java
Program 15.6 dataStructures/BinarySearchTree.java
Program 15.7 dataStructures/DBinarySearchTree.java
Program 15.8 applications/SimpleHistogramming.java
Program 15.9 applications/TreeHistogramming.java
Program 15.10 applications/TreeHistogramming.java
Program 15.11 dataStructures/DBinarySearchTreeWithGE.java
Program 15.12 applications/BestFit.java
Program 15.13 applications/CrossingDistribution.java


Chapter 16 Programs

Chapter 16 has no programs.


Chapter 17 Programs

Program 17.1 dataStructures/Graph.java
Program 17.2 dataStructures/AdjacencyWDigraph.java
Program 17.3 dataStructures/LinkedDigraph.java
Program 17.4 dataStructures/LinkedDigraph.java
Program 17.5 dataStructures/Graph.java
Program 17.6 dataStructures/AdjacencyDigraph.java
Program 17.7 dataStructures/LinkedDigraph.java
Program 17.8 dataStructures/Graph.java
Program 17.9 dataStructures/Graph.java
Program 17.10 dataStructures/Graph.java
Program 17.11 dataStructures/Graph.java
Program 17.12 dataStructures/Graph.java
Program 17.13 dataStructures/Graph.java


Chapter 18 Programs

Program 18.1 applications/GreedyLoading.java
Program 18.2 dataStructures/Graph.java
Program 18.3 dataStructures/AdjacencyWDigraph.java
Program 18.4 dataStructures/Graph.java


Chapter 19 Programs

Program 19.1 applications/MinMax3.java
Program 19.2 applications/Chessboard.java
Program 19.3 applications/MergeSort.java
Program 19.4 applications/MergeSort.java
Program 19.5 applications/MergeSort.java
Program 19.6 applications/QuickSort.java
Program 19.7 applications/QuickSort.java
Program 19.8 applications/Select.java
Program 19.9 applications/Select.java
Program 19.10 applications/ClosestPoints.java
Program 19.11 applications/ClosestPoints.java
Program 19.12 applications/ClosestPoints.java


Chapter 20 Programs

Program 20.1 applications/RecursiveDPKnapsack.java
Program 20.2 applications/RecursiveDPKnapsack3.java
Program 20.3 applications/IterativeDPKnapsack.java
Program 20.4 applications/IterativeDPKnapsack.java
Program 20.5 applications/RecursiveDPMatrixChain1.java
Program 20.6 applications/RecursiveDPMatrixChain2.java
Program 20.7 applications/IterativeDPMatrixChain.java
Program 20.8 dataStructures/AdjacencyWDigraph.java
Program 20.9 dataStructures/AdjacencyWDigraph.java
Program 20.10 dataStructures/Graph.java
Program 20.11 applications/IterativeDPNoncrossingSubset.java
Program 20.12 applications/IterativeDPNoncrossingSubset.java


Chapter 21 Programs

Program 21.1 applications/RecursiveBTLoading1.java
Program 21.2 applications/RecursiveBTLoading2.java
Program 21.3 applications/RecursiveBTLoading3.java
Program 21.4 applications/RecursiveBTLoading3.java
Program 21.5 applications/IterativeBTLoading.java
Program 21.6 applications/RecursiveBTKnapsack.java
Program 21.7 applications/RecursiveBTKnapsack.java
Program 21.8 applications/RecursiveBTKnapsack.java
Program 21.9 applications/RecursiveBTKnapsack.java
Program 21.10 dataStructures/AdjacencyGraph.java
Program 21.11 dataStructures/AdjacencyGraph.java
Program 21.12 dataStructures/AdjacencyWDigraph.java
Program 21.13 dataStructures/AdjacencyWDigraph.java
Program 21.14 applications/RecursiveBTBoard.java
Program 21.15 applications/RecursiveBTBoard.java


Chapter 22 Programs

Program 22.1 applications/FIFOBBLoading1.java
Program 22.2 applications/FIFOBBLoading2.java
Program 22.3 applications/FIFOBBLoading3.java
Program 22.4 applications/MaxProfitBBLoading.java
Program 22.5 applications/MaxProfitBBLoading.java
Program 22.6 applications/MaxProfitBBKnapsack.java
Program 22.7 dataStructures/AdjacencyGraph.java
Program 22.8 dataStructures/AdjacencyWDigraph.java
Program 22.9 applications/LeastCostBBBoard.java