algorithms and datastructures in c