C/C++ implementations of data structures, algorithms, and common designs.
| Name | Sources | Notes |
|---|---|---|
| SharedPtr | test .hpp | My own version of std::shared_ptr. |
| UniquePtr | test .hpp | My own version of std::unique_ptr. |
| Linked List | test .hpp | Doubly linked list and merge sort. |
| Binary Heap | test .hpp | Heap implemented with complete binary tree. |
| Hash Table | test .hpp | Hash table with conflicting entries appended to linked list. |
| AVL Tree | test .hpp | Self-balancing binary search tree. |
| Graph | test .hpp | Graph implemented with adjacency list and matrix. |
| Sorting | test .hpp | Common sorting algorithms. |
| N-Puzzle | test .hpp | A* search to solve the N-Puzzle problem. |
| Dijkstra | test .hpp | Algorithm to find shortest path between nodes in a graph. |
| MD5 | test .hpp | MD5 hash function. |
| Calculator | test .hpp .cpp | Infix arithmetic expression calculator based on recursive descent parser. |
| Web Server | example .h .c | Single-threaded web server. |
| Greeting | example .h .c | Funny ASCII art for a greeting. |
Build with CMake:
mkdir build
cd build
cmake ..
cmake --build .
C++ builds will be located at build/cpp. C++ implementations come with unit tests which can be run with CTest:
ctest --test-dir cpp
C builds will be located at build/c. C implementations don't have unit tests. Please run each binary individually:
./c/example_websvr
See the LICENSE file for license rights and limitations.