稀疏矩阵(C)

来源:互联网 发布:mac os x lion 10.7.3 编辑:程序博客网 时间:2024/06/05 04:05

说明
如果在矩阵中,多数的元素并没有资料,称此矩阵为稀疏矩阵(sparse matrix ), 由于矩阵在程式中常使用二维阵列表示,二维阵列的大小与使用的记忆体空间成正比,如果多数的元素没有资料 , 则会造成记忆体空间的浪费 , 为 此 , 必须设计稀疏矩阵的阵列储存方式 , 利用较少的记忆体空间储存完整的矩阵资讯。

C

#include<stdio.h>#include<stdlib.h>int main(){    //原矩阵    /* 0   0   0   0   0   0       0   3   0   0   0   0       0   0   0   6   0   0       0   0   9   0   0   0       0   0   0   0  12   0       三十个数*/    //第一行代表的是,原矩阵中的行,列,以及非零元素的个数,如下:5行6列4个非零元素    //(从第二行开始)第一列代表非零元素在原矩阵中的横坐标,第二列代表非零元素在原矩阵中的纵坐标,    //第三列代表改位置的存储值,如:1,1,3代表原矩阵中的第一行第一列的值3.    //这样就能用15个元素来带代表原矩阵中的30个元素    int num[5][3] = { 5,6,4,                      1,1,3,                      2,3,6,                      3,2,9,                      4,4,12 };    printf("稀疏矩阵\n");    for (int i = 0; i < 5; i++)    {        for (int j = 0; j < 3; j++)        {            printf("%4d", num[i][j]);        }        printf("\n");    }    printf("还原矩阵\n");    int k = 1;    for (int i = 0; i < num[0][0]; i++)    {        for (int j = 0; j < num[0][1]; j++)        {            if (i == num[k][0] && j == num[k][1])            {                printf("%4d", num[k][2]);                k++;            }            else                printf("%4d", 0);        }        printf("\n");    }    system("pause");    return 0;}
原创粉丝点击