Simple containers and sorts implementation in pure C. Modules list:
- CContainers (with tests and speed-check submodules).
- CAlgorithm (with tests and speed-check sudmodules).
- HuffmanCoding (with tests and executables submodules).
- PDoubleLinkedList -- double linked list for pointers.
- PHashMap -- hash map implementation for <pointer, pointer> pairs.
- PHeap -- binary heap for pointers with customizable base container.
- PODVector -- dynamic array for POD types.
- PSinleLinkedList -- single linked list for pointers.
- PVector -- dynamic array for pointers.
- PVectorHeap -- binary heap for pointers, based on PVector.
Interface-like structures, used to simulate polymorphism.
Error handling, for-each and for-each-reversed implementations.
CUnit framework tests for CContainers.
Speed-check executable for CContainers methods.
Sorts implementations for containers that support interfaces provided by CContainers:
- HeapSort.
- MergeSort.
- InplaceMergeSort.
- QuickSort.
- IntroSort.
Sorts implementations for plain pointer arrays:
- HeapSort.
- MergeSort.
- InplaceMergeSort.
- QuickSort.
- IntroSort.
CUnit framework tests for CAlgorithm sorts.
Speed-check executable for CAlgorithm sorts.
Simple one-header-one-object huffman encoding/decoding implementation using CContainers.
Basic coding/decoding tests for the library. CUnit framework used.
Console util for coding/decoding files using huffman algorithm.
Parallel version of HuffmanArchive: additional worker threads used for parallel coding/decoding file parts. This util is about 2 times faster than non-parallel version.