
External
Open Data Structures - An Introduction
Offered as an introduction to the field of data structures and algorithms, Open Data Structures covers the implementation and analysis of data structures for sequences (lists), queues, priority queues, unordered dictionaries, ordered dictionaries, and graphs. Focusing on a mathematically rigorous approach that is fast, practical, and efficient, Morin clearly and briskly presents instruction along with source code.
- Author
- Pat Morin
- Publisher
- Carleton University
- Source
- LibreTexts
- License
- CC BY
- Language
- EN
- Category
- Information Technology
Contents· 71 sections
- 01: Introduction
- 1.01: The Need for Efficiency
- 1.02: Interfaces
- 1.03: Mathematical Background
- 1.04: The Model of Computation
- 1.05: Correctness Time Complexity and Space Complexity
- 1.06: Code Samples
- 1.07: List of Data Structures
- 1.08: Discussion and Exercises
- 02: Array-Based Lists
- 2.01: ArrayStack - Fast Stack Operations Using an Array
- 2.02: FastArrayStack - An Optimized ArrayStack
- 2.03: ArrayQueue - An Array-Based Queue
- 2.04: ArrayDeque - Fast Deque Operations Using an Array
- 2.05: DualArrayDeque - Building a Deque from Two Stacks
- 2.06: RootishArrayStack - A Space-Efficient Array Stack
- 2.07: Discussion and Exercises
- 03: Linked Lists
- 3.01: SLList - A Singly-Linked List
- 3.02: DLList - A Doubly-Linked List
- 3.03: SEList - A Space-Efficient Linked List
- 3.04: Discussion and Exercises
- 04: Skiplists
- 4.01: The Basic Structure
- 4.02: SkiplistSSet - An Efficient SSet
- 4.03: SkiplistList - An Efficient Random-Access List
- 4.04: Analysis of Skiplists
- 4.05: Discussion and Exercises
- 05: Hash Tables
- 5.01: ChainedHashTable - Hashing with Chaining
- 5.02: LinearHashTable - Linear Probing
- 5.03: Hash Codes
- 5.04: Discussion and Exercises
- 06: Binary Trees
- 6.01: BinaryTree - A Basic Binary Tree
- 6.02: BinarySearchTree - An Unbalanced Binary Search Tree
- 6.03: Discussion and Exercises
- 07: Random Binary Search Trees
- 7.01: Random Binary Search Trees
- 7.02: Treap - A Randomized Binary Search Tree
- 7.03: Discussion and Exercises
- 08: Scapegoat Trees
- 8.01: ScapegoatTree - A Binary Search Tree with Partial Rebuilding
- 8.02: Discussion and Exercises
- 09: Red-Black Trees
- 9.01: 2-4 Trees
- 9.02: A Simulated 2-4 Tree
- 9.03: Summary
- 9.04: Discussion and Exercises
- 10: Heaps
- 10.01: BinaryHeap - An Implicit Binary Tree
- 10.02: MeldableHeap - A Randomized Meldable Heap
- 10.03: Discussion and Exercises
- 11: Sorting Algorithms
- 11.01: Comparison-Based Sorting
- 11.02: Counting Sort and Radix Sort
- 11.03: Discussion and Exercises
- 12: Graphs
- 12.01: Representing a Graph by a Matrix
- 12.02: A Graph as a Collection of Lists
- 12.03: Graph Traversal
- 12.04: Discussion and Exercises
- 13: Data Structures for Integers
- 13.01: BinaryTrie - A digital search tree
- 13.02: XFastTrie - Searching in Doubly-Logarithmic Time
- 13.03: YFastTrie - A Doubly-Logarithmic Time SSet
- 13.04: Discussion and Exercises
- 14: External Memory Searching
- 14.01: The Block Store
- 14.02: B-Trees
- 14.03: Discussion and Exercises