必威体育Betway必威体育官网
当前位置:首页 > IT技术

稀疏矩阵----三元组顺序表建立、转置

时间:2019-10-30 22:15:01来源:IT技术作者:seo实验室小编阅读:53次「手机版」
 

稀疏矩阵

对于稀疏矩阵,采用压缩存储方法时,只存储非0元素。必须存储非0元素的行下标值、列下标值、元素值。因此,一个三元组(i, j, aij)唯一确定稀疏矩阵的一个非零元素。

若以行序为主序,稀疏矩阵中所有非0元素的三元组,就可得构成该稀疏矩阵的一个三元组顺序表。

 


代码

#include <stdio.h>
#include <stdlib.h>
#define OK 1
#define ERROR -1
#define MAXstrlen 255
typedef int Status;
typedef int ElemType;
 typedef struct{
    int row;  //行下标
    int col;   //列下标
    ElemType value; //元素值
 }Triple;
 typedef struct{
    int rn; //行数
    int cn; //列数
    int tn; //元素值
    Triple data[MAXSTRLEN];
 }TMatrix;

 void TransMatrix(TMatrix A, TMatrix *B){
    int p, q, col;
    B->cn = A.rn;
    B->rn = A.cn;
    B->tn = A.tn;
    if(A.tn == 0)
        printf("A表为空表");
    q = 0;
    for(col = 0; col < A.tn; col++){
            //A的列数 一列一列变成B的行数
        for(p = 0; p < A.tn; p++){
            //循环次数是非零元素的个数
            if(A.data[p].col == col){
                B->data[q].row = A.data[p].col;
                B->data[q].col = A.data[p].row;
                B->data[q].value = A.data[p].value;
                q++;
            }

        }


    }


 }

int main()
{
    TMatrix A, B;
    int i, j, e;
    int k = 0;
    printf("输入三元组 矩阵(行数,列数,值)\n");

    //EOF 输入结束 下一行Ctrl+z enter
    while(scanf("%d%d%d", &i,&j,&e) != EOF ){

        A.data[k].row = i -1;
        A.data[k].col = j-1;
        A.data[k].value = e;
        k++;
        A.tn = k;
    }
    printf("矩阵为\n");
    for(i = 0; i < A.tn; i++){
        printf("%3d%3d%3d\n", A.data[i].row+1, A.data[i].col+1, A.data[i].value);


    } printf("转置后:\n");
    TransMatrix(A, &B);
    for(i = 0; i < B.tn; i++){
        printf("%3d%3d%3d\n", B.data[i].row+1, B.data[i].col+1, B.data[i].value);


    }



    return 0;
}

结果:

文章最后发布于: 2018-11-16 17:02:08

相关阅读

城市表层土壤重金属污染分析

(额外补充:因为CSDN的编辑器现在对公式不太友好,所以公式都使用的图片。因为时间问题matlab代码已经找不到了,只保留了python代码。代

Axure教程:制作待办事项列表

待办事项是我们做时间管理时一个很好的工具,那么我们如何用Axure做一个待办事项列表呢?这就要用到中继器这个功能。中继器在英文里r

Word2010中制作三线表

三线表一般多见于教科书及一些科研杂志中,在日常生活中制作部分表格也会需要它。三线表能使内容清新的表达出来,从而使人迅速领会到

Lambda表达式

本质上是一个匿名的方法: 先看下面这个例子,一个传统的方法 `public int add(int x,int y){ return x+y; }` 转换为Lambd

Response.setContentType(MIME)的作用及参数列表

Response.setContentType(MIME)的作用是时客户端的浏览器区分不同种类的数据,并根据不同的MIME调用浏览器内不同的程序嵌入模块来

分享到:

栏目导航

推荐阅读

热门阅读