What are the best algorithms for representing a sparse matrix with linked lists