上三角[二维数组]以行转换<一维数组>
void main(void) { int Upper[5][5]{..............}; int Index; int i,j; intRoMajor[15];.....
....
....//以下数组数据转换
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(i<=j) //??疑问
{
Index=(11.i)*i/2+(j-i);
RowMajor[Index]=Upper[i][j];
}
}
----------------解决方案--------------------------------------------------------
没能解释下的 ?
----------------解决方案--------------------------------------------------------
你不是要上三角吗?对角线上i==j;下三角是i>j,上三角是i<j
----------------解决方案--------------------------------------------------------
if语句判断的是什么,不是很清楚
----------------解决方案--------------------------------------------------------
判断只有当i<j的时候才进行转换..表示只转换上三角元素
----------------解决方案--------------------------------------------------------
哦,明白了,N*N方阵 谢谢
----------------解决方案--------------------------------------------------------
稀疏数组时 为什么:
for(i=0;i<9;i++)
for(j=0;j<9;j++)
if(data[i][j]!=0)
{
Index++; //增加索引值
CompressData[Index][0]=i; //i 不存入CompressDtat[0][0]??
CompressData[Index][1]=j;
CompressDtat[Index][2]=data[i][j];
CompressData[0][0]=9;//原数组的行数 CompressData[0][1]=7; //原数组的列数 CompressData[0][2]=Index; //使用元素的个数
******请看上面的存行、列以及元素使用个数已经占了 CompressDtat[0][0]\[0][1]\[0][2] 如果这样的话,那先存入的是都往后移动了?
----------------解决方案--------------------------------------------------------