📄 5.24.c
字号:
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(i<1||i>M.mu||j<1||j>M.nu) return ERROR;
pos=(i-1)*M.nu+(j-1)+1;
for(p=1;p<=M.tu&&M.data[p].ri<pos;p++); //比较非0元素行主序序号与目标点序号,小于就换下一个非0元素
//非0元素行主序序号呈递增
if(M.data[p].ri!=pos)
{if(p<=M.tu){e=0;return OK;} //没有找到
else return ERROR;
}
e=M.data[p].e; //找到
return OK;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -