/* ======================================== */
/* 程式实例: 2_7.c */
/* 稀疏阵列之压缩的表示法 */
/* ======================================== */
void main()
{
int sparse[5][10] = { /* 稀疏阵列的定义 */
0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 9, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 2, 0, 0, 0, 0,
0, 0, 0, 0, 3, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 6, 0, 0 };
int compress[6][3]; /* 压缩阵列的宣告 */
int i,j,k;
k = 1; /* 设定变数初值 */
compress[0][0] = 5; /* 阵列sparse有5列 */
compress[0][1] = 10; /* 阵列sparse有10行 */
compress[0][2] = 5; /* 阵列使用5个元素 */
for ( i = 0; i < 5; i++ ) /* 二维阵列的走访 */
for ( j = 0; j < 10; j++ )
if ( sparse[i][j] != 0 ) /* 元素有没有使用 */
{
compress[k][0] = i; /* 储存列数 */
compress[k][1] = j; /* 储存行数 */
/* 储存元素值 */
compress[k][2] = sparse[i][j];
k++; /* 下一列 */
}
for ( i = 0; i < 6; i++ ) /* 压缩阵列的列印 */
{
for ( j = 0; j < 3; j++ )
printf("%2d ",compress[i][j]);
printf("/n"); /* 换行 */
}
}