第九周项目2 对称矩阵压缩存储的实现与应用1

#include <stdio.h>
#include <malloc.h>
#define N 4


void Init(int *&b);


void Assign(int b[], int e, int i, int j);

void Disp(int b[]);

void Destroy(int b[]);

int main()
{
    int *b1;  
    int i, j;
    int v;
    Init(b1);
    printf("请输入对称矩阵(只需要输入下三角部分即可)\n");
    for(i=0; i<N; i++)
    {
        printf("输入第%d行的%d个数据元素: ", i+1, i+1);
        for(j=0; j<=i; j++)
        {
            scanf("%d", &v);
            Assign(b1, v, i, j);

        }
    }
    Disp(b1);
    Destroy(b1);
    return 0;
}
void Init(int *&b)
{
    b=(int *)malloc(sizeof(int)*N*(N+1)/2);

}
void Assign(int b[], int e, int i, int j)
{
    int k;
    if(i>j)
    {
        k=i*(i+1)/2+j;
        b[k]=e;

    }
    else if(i<=j)
    {
        k=j*(j+1)/2+i;
        b[k]=e;
    }


}
void Disp(int b[])
{
    int i=0;
    int j=0;
    while(i<N)
    {
        while(j<N)
        {
            printf("%4d",b[i*(i+1)/2+j]);
            j++;
        }
        printf("\n");
        j=0;
        i++;
    }
}
void Destroy(int b[])
{

    free(b);
}
第九周项目2 对称矩阵压缩存储的实现与应用1_第1张图片

你可能感兴趣的:(第九周项目2 对称矩阵压缩存储的实现与应用1)