Yes I know these algorithms are already implemented for me and I should not re-invent the wheel.... You know what I don't care. Let me enjoy my geek life, I love to write C code producing friendly Segfault that you have no clues where it comes from your program with thoushands of lines of code. Whatever you think I won't change my mind.
The goal of this repo is to provide multi implementations for two data structures that are lists and hashmaps. A list can be used as a set, a stack or a queue and a hashmap is used for many applications and is generally faster but can create small memory overhead. Personally, I think with these two structures the most of use cases are covered if we do not talk about trees.
As the best and universal solution does not exist (and will not), I will try to provide as many derivations as possible where each is optimized for a certain context linked, array, list of data or list of pointers and some specializations for concurrent applications based on spin-locks, atomic instructions or privileges (ex dominant thread does not lock).
I want to have a simple and adaptable library with these algorithms for my personal projects. Why not using an existing one ? Because all my personal projects are for fun and the most interesting part of them is coding thus why not doing it myself ? Whatever, no one will ever use this but me however I hope it will teach me good things. The problem with reusing always something is that programs continues to get more and more complex and I do not have really the impression to train my coding skills enough.
Some would say do open-source projects but I did an open-source class and it was not a funny experience. I am a newbie, I show up on a huge project with thousands complex lines of code and there are complex inner behaviors inside the code thus I am able to do nothing because it is like finding a shell in the ocean. Therefore, I think it is necessary for me to re-invent a little the wheel to gain a better methodology to manage complex projects and to develop better coding skills and new intuitions.
In conclusion, I am not losing my time, I have fun, I learn interesting things and I have no idea why I am justifying myself.