5.24.c

来自「部分高校使用anyview编程测试数据结构习题,此代码为数据结构题集(c语言版)」· C语言 代码 · 共 37 行

C
37
字号
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 + =
减小字号Ctrl + -
显示快捷键?