Data Structures, Algorithms, & Applications in C++, 2nd Edition
Sartaj Sahni

Index of Text Programs

Most of the files with a .h extension have a corresponding .cpp file that contains a test program. Sample input data (where appropriate) and the generated output may be found in correspondingly named files with a .input and .output extension.

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 1 Programs

Program 1.1 abcInt.cpp
Program 1.2 abcFloat.cpp
Program 1.3 abcTemplate.cpp
Program 1.4 abcRef.cpp
Program 1.5 abcConstRef.cpp
Program 1.6 abcGeneral.cpp
Program 1.7 noSwap.cpp
Program 1.8 abcExceptionChar.cpp
Program 1.9 abcExceptionChar.cpp
Program 1.10 make2dArray.h
Program 1.11 make2dArrayNoCatch.h
Program 1.12 delete2dArray.h
Program 1.13 currency.h
Program 1.14 currency.h
Program 1.15 currency.h
Program 1.16 currency.h
Program 1.17 currency.h
Program 1.18 currency.cpp
Program 1.19 currencyNew.h
Program 1.20 currencyNew.h
Program 1.21 currencyNew.h
Program 1.22 currencyOverload.h
Program 1.23 currencyOverload.h
Program 1.24 currencyOverload.cpp
Program 1.25 currencyFriend.h
Program 1.26 myExceptions.h
Program 1.27 abcException.cpp
Program 1.28 abcException.cpp
Program 1.29 factorial.cpp
Program 1.30 sum.cpp
Program 1.31 rSum.cpp
Program 1.32 permutations.cpp
Program 1.33 sumSTL.cpp
Program 1.34 productSTL.cpp
Program 1.35 permutationsSTL.cpp
Program 1.36 quadraticRoots.cpp
Program 1.37 indexOfMax.cpp


Chapter 2 Programs

Program 2.1 sequentialSearch1.cpp
Program 2.2 rSequentialSearch.cpp
Program 2.3 ployEval.cpp
Program 2.4 horner.cpp
Program 2.5 rank.cpp
Program 2.6 rankSort1.cpp
Program 2.7 selectionSort.cpp
Program 2.8 bubbleSort.cpp
Program 2.9 bubbleSort.cpp
Program 2.10 insert.cpp
Program 2.11 rankSort2.cpp
Program 2.12 earlySelectionSort.cpp
Program 2.13 earlyBubbleSort.cpp
Program 2.14 insertionSort1.cpp
Program 2.15 insertionSort2.cpp
Program 2.16 sumCount1.cpp
Program 2.17 sumCount2.cpp
Program 2.18 rSumCount.cpp
Program 2.19 matrixTranspose.cpp
Program 2.20 inef.cpp
Program 2.21 matrixAdd.cpp
Program 2.22 matrixMultiply1.cpp
Program 2.23 matrixMultiply2.cpp
Program 2.24 minMax1.cpp
Program 2.25 minMax2.cpp
Program 2.26 sequentialSearch2.cpp
Program 2.27 d.cpp


Chapter 3 Programs

Program 3.1 binarySearch.cpp


Chapter 4 Programs

Program 4.1 timeInsertionSort1.cpp
Program 4.2 timeInsertionSort2.cpp
Program 4.3 timeInsertionSort3.cpp
Program 4.4 matrixMultiply3.cpp


Chapter 5 Programs

Program 5.1 linearList.h
Program 5.2 changeLength1D.h
Program 5.3 arrayList.h
Program 5.4 arrayList.h
Program 5.5 arrayList.h
Program 5.6 arrayList.h
Program 5.7 arrayList.h
Program 5.8 arrayList.h
Program 5.9 arrayIterator.h
Program 5.11 arrayListWithIterator.h
Program 5.12 vectorList.h
Program 5.13 vectorList.h
Program 5.14 vectorList.h


Chapter 6 Programs

Program 6.1 chainNode.h
Program 6.2 chain.h
Program 6.3 chain.h
Program 6.4 chain.h
Program 6.5 chain.h
Program 6.6 chain.h
Program 6.7 chain.h
Program 6.8 chain.h
Program 6.9 chain.h
Program 6.10 chainWithIterator.h
Program 6.11 extendedLinearList.h
Program 6.12 extendedChain.h
Program 6.13 circularListWithHeader.h
Program 6.14 studentRecord1.h
Program 6.15 studentRecord2.h
Program 6.16 studentRecord3.h
Program 6.17 binsort1.h
Program 6.18 chainWithBinSort.h, binsort2.cpp
Program 6.19 unionFindWithArrays.cpp
Program 6.20 equivNode.h
Program 6.21 unionFindWithChains.cpp


Chapter 7 Programs

Program 8.1 irregularArray.cpp
Program 7.2 matrix.h
Program 7.3 matrix.h
Program 7.4 matrix.h
Program 7.5 matrix.h
Program 7.6 matrix.h
Program 7.7 matrix.h
Program 7.8 diagonalMatrix.h
Program 7.9 diagonalMatrix.h
Program 7.10 diagonalMatrix.h
Program 7.11 triDiagonalMatrix.h
Program 7.12 lowerTriangularMatrix.h
Program 7.13 sparseMatrix.h
Program 7.14 sparseMatrix.h
Program 7.15 sparseMatrix.h
Program 7.16 sparseMatrix.h
Program 7.17 sparseMatrix.h
Program 7.18 linkedMatrix.h


Chapter 8 Programs

Program 8.1 stack.h
Program 8.2 derivedArrayStack.h
Program 8.3 derivedArrayStackWithCatch.h
Program 8.4 arrayStack.h
Program 8.5 linkedStack.h
Program 8.6 parenthesisMatching.cpp
Program 8.7 hanoiRecursive.cpp
Program 8.8 hanoiWithStacks.cpp
Program 8.9 railroadWithStacks.cpp
Program 8.10 railroadWithStacks.cpp
Program 8.11 railroadWithStacks.cpp
Program 8.12 railroadWithStacks.cpp
Program 8.13 switchBox.cpp
Program 8.14 equivalenceClasses.cpp
Program 8.15 maze.cpp


Chapter 9 Programs

Program 9.1 queue.h
Program 9.2 arrayQueue.h
Program 9.3 arrayQueue.h
Program 9.4 arrayQueue.h
Program 9.5 linkedQueue.h
Program 9.6 railroadWithQueues.cpp
Program 9.7 railroadWithQueues.cpp
Program 9.8 wireRouter.cpp
Program 9.9 componentLabeling.cpp
Program 9.10 machineShopSimulatorcpph
Program 9.11 task.h
Program 9.12 job.h
Program 9.13 machine.h
Program 9.14 eventList.h
Program 9.15 machineShopSimulator.cpp
Program 9.16 machineShopSimulator.cpp
Program 9.17 machineShopSimulator.cpp
Program 9.18 machineShopSimulator.cpp
Program 9.19 machineShopSimulator.cpp
Program 9.20 machineShopSimulator.cpp
Program 9.21 machineShopSimulator.cpp


Chapter 10 Programs

Program 10.1 dictionary.h
Program 10.2 sortedChain.h
Program 10.3 sortedChain.h
Program 10.4 sortedChain.h
Program 10.5 skipNode.h
Program 10.6 skipList.h
Program 10.7 skipList.h
Program 10.8 skipList.h
Program 10.9 skipList.h
Program 10.10 skipList.h
Program 10.11 skipList.h
Program 10.12 skipList.h
Program 10.13 threeToLong.cpp
Program 10.14 stringToInt.cpp
Program 10.15 hash.h
Program 10.16 hashTable.h
Program 10.17 hashTable.h
Program 10.18 hashTable.h
Program 10.19 hashTable.h
Program 10.20 hashChains.h
Program 10.21 compress.cpp
Program 10.22 compress.cpp
Program 10.23 compress.cpp
Program 10.24 compress.cpp
Program 10.25 decompress.cpp
Program 10.26 decompress.cpp
Program 10.27 decompress.cpp
Program 10.28 decompress.cpp


Chapter 11 Programs

Program 11.1 binaryTreeNode.h
Program 11.2 binaryTreeTraversals.cpp
Program 11.3 binaryTreeTraversals.cpp
Program 11.4 binaryTreeTraversals.cpp
Program 11.5 binaryTreeTraversals.cpp
Program 11.6 infix.cpp
Program 11.7 binaryTreeTraversals.cpp
Program 11.8 binaryTree.h
Program 11.9 linkedBinaryTree.h
Program 11.10 linkedBinaryTree.h
Program 11.11 linkedBinaryTree.h
Program 11.12 booster.h
Program 11.13 booster.cpp
Program 11.14 unionFindWithTrees.cpp
Program 11.15 unionFindNode.h
Program 11.16 unionFindWithWeightingRule.cpp
Program 11.17 unionFindWithCompaction.cpp, fastUnionFind.h


Chapter 12 Programs

Program 12.1 maxPriorityQueue.h
Program 12.2 maxHeap.h
Program 12.3 maxHeap.h
Program 12.4 maxHeap.h
Program 12.5 maxHblt.h
Program 12.6 maxHblt.h
Program 12.7 maxHblt.h
Program 12.8 heapSort.h
Program 12.9 lptSchedule.cpp
Program 12.10 huffmanTree.cpp


Chapter 13 Programs

Program 13.1 winnerTree.h
Program 13.2 firstFit.cpp


Chapter 14 Programs

Program 14.1 bsTree.h
Program 14.2 indexedBSTree.h
Program 14.3 binarySearchTree.h
Program 14.4 binarySearchTree.h
Program 14.5 binarySearchTree.h
Program 14.6 binarySearchTree.h
Program 14.7 dBinarySearchTree.h
Program 14.8 histogram.cpp
Program 14.9 treeHistogram.cpp
Program 14.10 dBinarySearchTreeWithGE.h
Program 14.11 bestFit.cpp
Program 14.12 crossings.cpp


Chapter 15 Programs

Chapter 15 has no programs.


Chapter 16 Programs

Program 16.1 graph.h
Program 16.2 adjacencyWDigraph.h
Program 16.3 linkedDigraph.h
Program 16.4 graph.h
Program 16.5 adjacencyWDigraph.h
Program 16.6 linkedDigraph.h
Program 16.7 graph.h
Program 16.8 graph.h
Program 16.9 graph.h
Program 16.10 graph.h
Program 16.11 graph.h


Chapter 17 Programs

Program 17.1 greedyLoading.h
Program 17.2 graph.h
Program 17.3 adjacencyWDigraph.h
Program 17.4 graph.h


Chapter 18 Programs

Program 18.1 minMax3.cpp
Program 18.2 tileBoard.cpp
Program 18.3 mergeSort.h
Program 18.4 mergeSort.h
Program 18.5 mergeSort.h
Program 18.6 quickSort.h
Program 18.7 quickSort.h
Program 18.8 select.cpp
Program 18.9 select.cpp
Program 18.10 closestPoints.cpp
Program 18.11 closestPoints.cpp
Program 18.12 closestPoints.cpp


Chapter 19 Programs

Program 19.1 recursiveDPKnapsack.cpp
Program 19.2 noRecomputationDPKnapsack.cpp
Program 19.3 iterativeDPKnapsack.cpp
Program 19.4 iterativeDPKnapsack.cpp
Program 19.5 recursiveDPMatrixChain.cpp
Program 19.6 noRecomputationDPMatrixChain.cpp
Program 19.7 iterativeDPMatrixChain.cpp
Program 19.8 adjacencyWDigraph.cpp
Program 19.9 adjacencyWDigraph.cpp
Program 19.10 graph.cpp
Program 19.11 noncrossingSubset.cpp
Program 19.12 noncrossingSubset.cpp


Chapter 20 Programs

Program 20.1 recursiveBTLoading1.cpp
Program 20.2 recursiveBTLoading2.cpp
Program 20.3 recursiveBTLoading3.cpp
Program 20.4 recursiveBTLoading3.cpp
Program 20.5 iterativeBTLoading.cpp
Program 20.6 recursiveBTKnapsack.cpp
Program 20.7 recursiveBTKnapsack.cpp
Program 20.8 recursiveBTKnapsack.cpp
Program 20.9 recursiveBTKnapsack.cpp
Program 20.10 adjacencyGraph.h
Program 20.11 adjacencyGraph.h
Program 20.12 adjacencyWDigraph.h
Program 20.13 adjacencyWDigraph.h
Program 20.14 recursiveBTBoard.cpp
Program 20.15 recursiveBTBoard.cpp


Chapter 21 Programs

Program 21.1 fifoBBLoading1.cpp
Program 21.2 fifoBBLoading2.cpp
Program 21.3 fifoBBLoading3.cpp
Program 21.4 maxProfitBBLoading.cpp
Program 21.5 maxProfitBBLoading.cpp
Program 21.6 maxProfitBBKnapsack.cpp
Program 21.7 adjacencyGraph.h
Program 21.8 adjacencyWDigraph.h
Program 21.9 leastCostBBBoard.cpp