A collection of common data structures and algorithms for Go applications.
- Algorithms
- Comparative Sorts
- Selection Sort
 - Insertion Sort
 - Shell Sort
 - Merge Sort
 - Quick Sort
 - 3-Way Quick Sort
 - Heap Sort
 
 - Non-Comparative Sorts
- Least Significant Digit
 - Most Significant Digit
 - 3-Way Quick Sort
 
 - Misc
- Shuffle
 - Quick Select
 
 
 - Comparative Sorts
 - Data Structures
- Lists
- Queue
 - Stack
 
 - Heaps
- Binary Heaps
 - Binomial Heaps
 - Fibonacci Heaps
 
 - Sets
- Union
 - Intersection
 - Difference
 - Powerset
 - Partitions
 
 - Range
- Discrete
- RangeList
 - RangeMap
 
 - Continuous
- RangeList
 - RangeMap
 
 
 - Discrete
 - Symbol Tables
- Unordered
- Separate Chaining Hash Table
 - Linear Probing Hash Table
 - Quadratic Probing Hash Table
 - Double Hashing Hash Table
 
 - Ordered
- BST
 - AVL Tree
 - Red-Black Tree
 - Tries
- Binary Trie
 - Patricia Trie
 
 
 
 - Unordered
 - Graphs
- Undirected Graph
 - Directed Graph
 - Weighted Undirected Graph
 - Weighted Directed Graph
 
 - Automata
- DFA
 - NFA
 
 - Grammars
- Context-Free Grammar
- Chomsky Normal Form
 - Left Recursion Elimination
 - Left Factoring
 - FIRST and FOLLOW
 
 
 - Context-Free Grammar
 
 - Lists
 - Lexers
- Two-Buffer Input Reader
 
 - Parsers
- Parser Combinators
 - Predictive Parser
 - LR Parsers (SLR, LALR, Canonical LR)
- Conflict Resolution
 
 
 
| Command | Purpose | 
|---|---|
make test | 
Run unit tests | 
make benchmark | 
Run benchmarks | 
make coverage | 
Run unit tests and generate coverage report |