5.24② 三元组表的另一种变型是,不存矩阵元素的行、
列下标,而存非零元在矩阵中以行为主序时排列的顺序
号,即在LOC(0,0)=1,l=1时按教科书5.2节中公式(5-4)
计算出的值。试写一算法,由矩阵元素的下标值i,j求
元素的值。
要求实现以下函数:
Status GetElem(TISMatrix M, int i, int j, int &e);
/* 求行优先序号二元组矩阵的元素A[i][j]的值e */
稀疏矩阵的优先序号二元组顺序表的类型TISMatrix的定义:
typedef struct {
int ri; // 该元素在以行为主序排列时的序号
ElemType e;
} NodeI;
typedef struct {
NodeI data[MAXSIZE];
int mu,nu,tu;
} TISMatrix; // 行优先序号二元组矩阵类型
Status GetElem(TISMatrix M, int i, int j, int &e)
/* 求行优先序号二元组矩阵的元素A[i][j]的值e */
{
int pos,p;
if(iM.mu||jM.nu) return ERROR;
pos=(i-1)*M.nu+(j-1)+1;
for(p=1;p //非0元素行主序序号呈递增
if(M.data[p].ri!=pos)
{if(p else return ERROR;
}
e=M.data[p].e; //找到
return OK;
}