当前位置:   article > 正文

用“三元组表”存储稀疏矩阵,并对矩阵进行转置。/验证实验/_基于三元组顺序表存储,矩阵转置

基于三元组顺序表存储,矩阵转置

#include<stdio.h>
#include<stdlib.h>
#define MAX 12
typedef int datatype;


typedef struct 
{
    int i, j;          //行号、列号
    datatype  v;       //元素值
} node;


typedef struct

    int m, n, t;  //行数,列数,非零元素个数
    node data[MAX];     //三元组表
}spmatrix;


spmatrix *Create()     //创建一个3行4列的稀疏矩阵
{
    int m , n , k = 0, t = 0 , z ;
    datatype element;
    spmatrix *matrix;
printf("请分别输入你要创建的稀疏矩阵的行号和列号:\n");
scanf("%d %d",&m,&n);
    matrix =new spmatrix;   //创建一个稀疏矩阵a
    matrix->m = m;
    matrix->n = n;
z=m*n;
    printf("输入%d个整数:\n",z);
    while (k < m*n)
    {
        scanf("%d", &element);
        if (element != 0)
        {
            matrix->data[t].i = k / n;
            matrix->data[t].j = k % n;
            matrix->data[t].v = element;
            t++;
        }
        k++;
    }
    matrix->t = t;
    return matrix;
}


spmatrix *TransMat(spmatrix *a)     //稀疏矩阵的转置
{
    int p, q, k = 0;
    spmatrix *b;
    b =new spmatrix;   //为矩阵b分配内存空间
    b->m = a->n;
    b->n = a->m;
    b->t = 0;
    if (a->t == 0)    
        return b;
    for (p = 0; p < a->n; p++)//put the a's j to the b's i,as the same
        for (q = 0; q < a->t; q++)
            if (a->data[q].j == p)
            {
                b->data[k].i = a->data[q].j;
                b->data[k].j = a->data[q].i;
                b->data[k].v = a->data[q].v;
                k++;
            }
    b->t = k;
    return b;
}


void Output(spmatrix *a)
{
    int  k = 0;
    for (int i = 0; i < a->m; i++)
    {
        for (int j = 0; j < a->n; j++)
        {
            if (i == a->data[k].i && j == a->data[k].j)
            {
                printf("%d ", a->data[k].v);
                k++;
            }
            else
                printf("%d ", 0);
        }
        printf("\n");
    }
}




void main()
{
    spmatrix *a = Create();
    spmatrix *b = TransMat(a);
    printf("原矩阵:\n");
    Output(a);
    printf("转置矩阵:\n");
    Output(b);
}
 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/893366
推荐阅读
相关标签
  

闽ICP备14008679号