efficient solutions for many of the operations since traversals could be limited to per-row basis instead of complete traversal of all non-zero elements some matrix operations and applicationshoweverrequire traversals in column order instead of row order by organizing the non-zero elements based on the matrix rowsthe time required in these cases can actually be worse than with single linked list to provide convenient traversals of both rows and columnswe can use multilinked organizationas illustrated in figure the nodes are linked by two chains along the respective row and column this requires two arrays of linked listsone for the row lists and another for the column lists sparsematrix listofcols listofrows row col value figure multi-linked list implementation of the sparse matrix from figure an individual element can be accessed by traversing the row chain or the column chain as needed this dual access requires that each node contain both the row and column indices in addition to the two link fieldsas shown in listing the implementation of the sparse matrix adt using multi-linked list is left as an exercise listing the multi-linked nodes for implementing the sparse matrix adt class matrixmlistnode def __init__selfrowcolvalue self row row self col col self value value self nextcol none self nextrow none