datastructure and algorithms in c#