用C语言把上三角矩阵转换成一维数组

帮帮忙啊 急啊

用heap(堆)实现就行了,每一个结点的左子结点是2*n,右子结点是2*n+1
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-12-24
#include "stdio.h"
#include <malloc.h>
#define N 3

main()
{
int num[N][N] = {{1,2,3},{0,4,5},{0,0,6}};
int i;
int j;
int sum = 0;
int k = 0;
int *result;

for (i = 1; i < N; ++i)
{
sum += i;
}

result = (int *)malloc(sizeof(int)*(N*N - sum));//一个N*N的数组,有0的个数为1+2+...+N-1,所以剩下元素个数为N*N-sum;

for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
{
if (i <= j)//上三角矩阵,行下标小于等于列下标
{
result[k] = num[i][j];
k++;
}

}
}

for (i = 0; i < N*N - sum; i++)
{
printf("%d ",result[i]);
}

printf("\n");

free(result);
}
相似回答