Data structures & their algorithms (1991)

I. INTRODUCTION PROGRAMMING AS AN ENGINEERING ACTIVITY. Computer Science Background. Memory and Data in Von Neuman Computers. Notation for Programs Locatives. Abstract Data Types. Mathematical Background. Finite and Infinite Series. Logarithms, Powers, and Exponentials. Order Notation. Recurrence Relations. Naive Probability Theory. II. ALGORITHM ANALYSIS. Properties of an Algorithm. Effectiveness Correctness. Termination Efficiency. Program Complexity. Exact vs. Growth-Rate Analysis. Principles of Mathematical Analysis. Expected Case and Amortized Analysis. Algorithm Paradigms. Brute-Force and Exhaustive Search. Greedy Algorithms. Dynamic Programming. NP Completeness. III. LISTS. List Operations. Basic List Representations. Stack Representation in Contiguous Memory. Queue Representation in Contiguous Memory. Stack Representation in Linked Memory. Queue Representation in Linked Memory. Stacks and Recursions. List Representations for Traversals. Doubly Linked Lists. IV. TREES BASIC DEFINITIONS. Special Kinds of Trees. Tree Operations and Traversals. Tree Implementations. Representation of Binary Trees. Representation of Ordered Trees. Representation of Complete Binary Trees. Implementing Tree Traversals and Scans. Stack-Based Traversals. Link Inversion Traversal. Scanning a Tree in Constant Space. ThreadedTrees. Implementing Level-Order Traversal. Summary. V. ARRAYS AND STRINGS. Arrays as Abstract Data Types. Multidimensional Arrays. Contiguous Representation of Arrays. Constant Time Initialization. Sparse Arrays. List Representations. Hierarchical Tables. Arrays with Special Shapes. Representation of Strings. Huffman Encoding Lempel Ziv Encoding. String Searching. The Knuth-Morris-Pratt Algorithm. The Boyer-Moore Algorithm. Fingerprinting and the Karp-Rabin Algorithm. VI. LIST AND TREE IMPLEMENTATION OF SETS. Sets and Dictionaries as Abstract Data Types. Unordered Lists. Ordered Lists. Binary Search Interpolation Search Skip Lists. Binary Search Trees. Insertion Deletion. Static Binary Search Trees. Optimal Trees Probability-Balanced. Trees Median Split Trees. VII. TREE STRUCTURES FOR DYNAMIC DICTIONARIES. AVL Trees: Insertion Deletion. 23 Trees and Btrees. 23 Trees Red-Black Trees. (a,b)Trees and B Trees. Self-Adjusting Binary Search Trees. VIII. SETS OF DIGITAL DATA. Bit Vectors. Tries and Digital Search Trees. Hashing Techniques. Chaining Strategies Open Addressing Strategies. Deletions Extendable Hashing. Hashing Functions. Hashing by Division Hashing by Multiplication. Perfect Hashing of Static Data Universal Classes of Hash Functions. IX. SETS WITH SPECIAL OPERATIONS. Priority Queues. Balanced Tree Implementations. Heaps Leftist Trees. Disjoint Sets with Union. Up-Trees Path Compression. Range Searching: kdTrees for Multidimensional Searching. Quad Trees Grid Files. X. MEMORY MANAGEMENT. The Problem of Memory Management. Records of a Single Size. Reference Counts Mark and Sweep. Garbage Collection Collecting by Copying. Final Cautions on Garbage Collection. Compaction of Records of Various Sizes. Managing A Pool of Blocks of Various Sizes. Allocation Strategies Data Structures for Freeing Buddy Systems. XI. SORTING. Kinds of Sorting Algorithms. Insertion and Shell Sort. Selection and Heap Sort. Quick Sort. The Information-Theoretic Lower Bound. Digital Sorting. Bucket Sort Radix Sort Radix Exchange Sort. External Sorting. Merge Sorts Polyphase Merge Sort. Generating the Initial Runs. Finding the Median. XII. GRAPHS. Graphs and Their Representation. Trees. Graph Searching. Breadth-First Search Depth-First Search. Greedy Algorithms on Graphs. Minimum Spanning Trees Single-Source Least-Cost Paths. All Pairs Least-Cost Paths. Network Flow. Finding Maximum Flows. Implementing the Max Flow. Algorithm. Applications of Max Flow. XIII. ENGINEERING WITH DATA STRUCTURES. Locatives. 067339736XT04062001