【发布时间】:2018-04-10 17:37:00
【问题描述】:
我想遍历一个已转换为一维的二维方阵。
问题是我想遍历它,就好像我在对角线中遍历原始 2D 一样。
该数组是对角的,我最初使用 malloc 在一维中创建它以避免分配过多的内存。
数组的大小:
int Tsize = N*(N+1)/2; //table size -> diagonal array of (N+1)*N/2 elements
int* table = malloc(Tsize*sizeof(int));
我知道这样可以遍历扁平的二维数组。
do{
i = row*N + col;
col++;
if (col>N-1){
col = 0;
row++;
}
printf("%d ", x[i]);
} while( row < N);
而here 是我在对角线中遍历数组时发现的。
对于这个数组:
int x[3][3] = {1, 2, 3,
ø, 4, 5,
ø, ø, 6};
ø:我不会使用那个元素。
我创建了这个数组:
int k[6] = {1,2,3,4,5,6};
我想像这样遍历它:
1,4,6,2,5,3
你有什么建议吗?我被卡住了。
【问题讨论】:
-
如果你想将矩阵作为二维数组进行遍历,为什么要先将其转换为一维呢?
-
我使用 malloc 创建了一维数组,但我想将其视为对角数组。我这样做是因为这样我分配的内存更少
-
你卡在哪里了?到目前为止你有什么?
-
“沿对角线遍历”是什么意思?你能展示遍历模式吗? “对角线”通常表示主对角线......
-
"我使用 malloc 创建了一维数组" --> 发布该代码。