`
CreazyApple
  • 浏览: 61695 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

稀疏矩阵三元组存储

 
阅读更多
//稀疏矩阵的三元组存储
#define MAX_SIZE 100 //非零元个数的最大值

typedef struct
{
    int i, j; //行下标,列下标
    ElemType e; //非零元的值
} Triple;

typedef struct
{
    Triple data[MAX_SIZE+1]; //非零元三元组表,data[0]未用
    int mu, nu, tu; //矩阵的行数,列数,非零元个数
} TSMatrix;


Status CreateSMatrix(TSMatrix * M)
{
    int i;
    Triple T;
    Status k;
    printf("请输入矩阵的行数,列数,非零元素个数: ");
    scanf("%d%d%d", &(*M).mu, &(*M).nu, &(*M).tu);
    if ((*M).tu > MAX_SIZE) //非零元素个数太多
    {
        return ERROR;
    }
    (*M).data[0].i = 0; //为以下比较顺序做准备,这里我就不明白了,怎么为以下比较顺序做准备呢?不懂。。
    for (i = 1; i <= (*M).tu; i++)
    {
        do
        {
            printf("请按行序顺序输入第%d个非零元素所在的行(1~%d), 列(1~%d), 元素值: ",
                   i, (*M).mu, (*M).nu);
            scanf("%d%d%d", &(T.i), &(T.j), &(T.e));//获取行,列,元素值
            k = 0; //输入值范围正确的标志
            if ((T.i < 1) || (T.i > (*M).mu) || (T.j < 1) || (T.j > (*M).nu)) //行或列超出范围
            {
                k = 1; //行或列的顺序有错
                printf("输入值的范围不正确,请重新输入: ");
            }
        } while (k); //如果输入值范围不正确则重新输入
        (*M).data[i] = T;
    }
    return OK;
}


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics