稀疏矩阵转置出现随机数


void zhuanzhi(TSMatrix *k,TSMatrix *q)
{
 q->m=k->n;
 q->n=k->m;
 q->len=k->len;//非零元素个数
 int n=0;
 int i,j;
 for(i=0;in;i++)
    for(j=0;jlen;k++)
         if(k->data[j].col==i)
             {q->data[n].col=k->data[j].row;
              q->data[n].row=k->data[j].col;
              q->data[n].v=k->data[j].v;
              n++;
             }

}

img

三元组只有第一个正确 后面都是随机数

望采纳!!点击该回答右侧的“采纳”按钮即可采纳!
我看出来几个问题:
首先,在枚举非零元素时,应该使用 j 而不是 k 作为循环变量。

其次,在给转置矩阵的非零元素赋值时,应该使用 n 作为数组下标,而不是直接将其添加到数组的末尾。

代码应该是这样的

void zhuanzhi(TSMatrix *k, TSMatrix *q)
{
    q->m = k->n;
    q->n = k->m;
    q->len = k->len; // 非零元素个数
    int n = 0;
    int i, j;
    for (i = 0; i < k->n; i++) {
        for (j = 0; j < k->len; j++) {
            if (k->data[j].col == i) {
                q->data[n].col = k->data[j].row;
                q->data[n].row = k->data[j].col;
                q->data[n].v = k->data[j].v;
                n++;
            }
        }
    }
}