稀疏矩阵三元组表示

#include <iostream>
#include <stdio.h>
#include <stdlib.h>

using namespace std;
void creat(int (*A)[4],int m,int n,int (*B)[4])
{
    int k=1;
    int i,j;
    for(i=0;i<m;++i)
    for(j=0;j<n;++j)
    {
        if(A[i][j]!=0)
        {
            B[k][0]=A[i][j];
            B[k][1]=i;
            B[k][2]=j;
            k++;
        }
    }
    B[0][0]=k-1;
    B[0][1]=m;
    B[0][2]=n;
}
void print(int B[][4])
{
    int i,j,k=1;
    for(i=0;i<B[0][1];++i)
    {
    for(j=0;j<B[0][2];++j)
    {
        if(i==B[k][1]&&j==B[k][2])
        {
            printf("%d ",B[k++][0]);
        }
        else printf("0 ");

    }
    printf("\n");
    }
}
int main()
{
    int A[][4]={{0,0,0,1},{0,0,3,2},{1,0,0,0},{0,2,0,0}};
    int B[4][4];
    creat(A,4,4,B);
    print(B);
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_39350434/article/details/81394901