Title: CSCI 240 Abstract Data Types
1Department of Computer and Information
Science,School of Science, IUPUI
CSCI 240
Abstract Data Types
Sparse Matrices
Dale Roberts, Lecturer IUPUI droberts_at_cs.iupui.edu
2Sparse Matrices
Sparse matrices have a large number of zero
elements in proportion to the number of nonzero
elements. Storing in n x n array will have a lot
of wasted space. Alternative circular lists
storing only nonzero elements.
3Sparse Matrix Nodes
of head nodes of rows of columns
head node
entry node
tag
j
i
aij
aij
tag is used to tell entry, head and aij nodes part
4Linked Representation for Matrix
4
4
0
2
11
1
1
1
0
12
5
1
2
-4
3
3
-15
Circular linked list
5Sparse Matrix Data Structure
- define MAX_SIZE 50 / size of largest matrix
/typedef enum head, entry tagfieldtypedef
struct matrix_node matrix_pointertypedef
struct entry_node int row
int col int value
typedef struct matrix_node
matrix_pointer down matrix_pointer
right tagfield tag
union matrix_pointer
next entry_node entry
u
matrix_pointer hdnodeMAX_SIZE
6Try creating your data for this matrix
7Acknowledgements
- All of this code is from Horowitz, Sahni, and
Anderson-Freed, Fundamentals of Data Structures
in C. - Some slides were originally developed by Chen,
Hsin-His.