dynamic sparse matrix data structure in C programming language