您现在的位置: 华盟网 >> 编程 >> C语言 >> 正文

矩阵三元组存储结构定义

2014/6/19 作者:不详 来源: 华盟收集
导读                  C++ Code jjbran    #include<stdio.h>    #define MAXSIZE 1000//非…

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  C++ Code jjbran
    #include<stdio.h>
    #define MAXSIZE 1000//非零元素的个数最多为1000
    typedef struct
    {
    int row;
    int col;
    int e;
    } Triple;
    typedef struct
    {
    Triple data[MAXSIZE];//非零元素的三元组表
    int m;//矩阵的行数
    int n;//矩阵的列数
    int non_zero_num;//非零元数的个数
    } XSMatrix;
    XSMatrix XSM_Info_Input(XSMatrix s)
    {
    int i;
    printf("输入矩阵的行数:");
    scanf("%d", &s.m);
    printf("输入矩阵的列数:");
    scanf("%d", &s.n);
    printf("输入矩阵的非零元素的个数:");
    scanf("%d", &s.non_zero_num);
    for (i = 0; i < s.non_zero_num; i++)
    {
    printf("输入第%d个非零元数的信息:\n", i + 1);
    printf("行下标:");
    scanf("%d", &s.data[i].row);
    printf("列下标:");
    scanf("%d", &s.data[i].col);
    printf("元素的值");
    scanf("%d", &s.data[i].e);
    }
    return s;
    }
    void XSM_Info_Output(XSMatrix s)
    {
    int i;
    printf("\n稀疏矩阵行数和列数:%d\t%d\n", s.m, s.n);
    printf("稀疏矩阵三元组表如下:\n");
    printf("行下标\t列下标\t值\n");
    for (i = 0; i < s.non_zero_num; i++)
    {
    printf("%d\t%d\t%d\n", s.data[i].row, s.data[i].col, s.data[i].e);
    }
    }
    //列序递增转置法
    XSMatrix TransXSM(XSMatrix s)
    {
    XSMatrix d;
    int i, j, k = 0;
    d.m = s.n;
    d.n = s.m;
    d.non_zero_num = s.non_zero_num;
    for (i = 0; i < s.n; i++)
    {
    for (j = 0; j < s.non_zero_num; j++)
    {
    if (s.data[j].col == i)
    {
    d.data[k].row = s.data[j].col;
    d.data[k].col = s.data[j].row;
    d.data[k].e = s.data[j].e;
    k++;
    }
    }
    }
    return d;
    }
    main()
    {
    XSMatrix source, dest;
    source = XSM_Info_Input(source);
    XSM_Info_Output(source);
    dest = TransXSM(source);
    XSM_Info_Output(dest);
    }
                  微信群名称:华盟黑白之道二群   华盟-黑白之道⑦QQ群: 9430885

  • 上一篇编程:

  • 下一篇编程:
  • 网友评论
      验证码
     

    关注

    分享

    0

    讨论

    2

    猜你喜欢

    论坛最新贴

    编程栏目相关内容