(1)查找运算ElemType Find(SMatrix *dm, int i, int j)
//查找[i][j]
ElemType Find(SMatrix *dm, int i, int j) //m行m列
{
int temp, k;
if (i<0 || i>=dm->m || j<0 || j>=dm->m) return ERROR;
if(i<j)
{
temp = i;
i=j;
j = temp;
}
k=i*(i+1)/2+j;
return dm->elements[k];
}
(2)赋值运算void SetValue(SMatrix *dm, int i, int j, ElemType x)
void SetValue(SMatrix *dm, int i, int j, ElemType x) //设置[i][j]=x
{
int temp, k;
if(i<j){ temp = i;j=i; j = temp; }
k=i*(i+1)/2+j;
dm->elements[k] =x;
}
ElemType Find(SparseMatrix *M, int i, int j) {
if(i>=m||j>=n) return NULL;
for(k = 0; k<M->t; k++){
if(M->table[k].row==i && M->table[k].col==j)
return M->table[k].value;
}
return ZERO; //ZERO为预定义的零元值
}
时间复杂度为O(t) t 是实际非零元素个数
3.