2. 稀疏矩阵
当一个阶数较大的矩阵中的非零元素个数s相对于矩阵元素的总个数 t非常小时,即s<<t时,称该矩阵为稀疏矩阵(sparse matrix)。
三元组表示法
若把稀疏矩阵的三元组线性表按顺序存储结构存储,则称为稀疏矩阵的三元组顺序表简称为三元组表(list of 3-tuples)。(三元组类型TupNode;三元组顺序表的类型TSMatrix)
第0行存储非零元素的个数、矩阵行数、矩阵列数(存值、行标、列标)
typedef struct
{
float val;
int i, j;
}Trimat;
Trimat trimat[maxSize + 1];
float val = trimat[k].val;
int i = trimat[k].i;
int j = trimat[k].j;
邻接表表示法
十字链表表示法
十字链表(orthogonal list)是稀疏矩阵的一种链式存储结构(相应的,前面的三元组顺序表是稀疏矩阵的一种顺序存储结构)。
(四)、广义表的定义
广义表(generalized table / Glist)是线性表的推广,是有限个元素的序列,其逻辑结构采用括号表示法表示如下:
GL=(a1,a2,…,ai,…,an)
其中n表示广义表的长度,即广义表中所含元素的个数,n≥0。若n=0,称为空表。a,为广义表的第i个元素,如果ai属于原子类型(原子类型的值是不可分解的,如C/C++语言中的整型、实型和字符型等),称为广义表GL的原子(atom);如果ai又是一个广义表,称为广义表GL的子表(subgeneralized table)。