c语言执行zigzag
时间: 2024-11-15 17:34:30 浏览: 5
在C语言中,"zigzag"通常指矩阵的一种特殊遍历方式,也称为"之"字形打印或者螺旋矩阵。这种遍历方法从矩阵的左上角开始,先向下走一格,然后向右走一格,接着向上走一格,再向右走一格,如此反复,直到遍历完整个矩阵。以下是简单的C语言代码示例,展示如何实现二维数组的螺旋遍历:
```c
#include <stdio.h>
void zigzag(int matrix[ROW][COL], int row, int col, int direction) {
int i = 0, j;
while (row >= 0 && col >= 0) {
// 向下
for (j = 0; j < col; j++) {
printf("%d ", matrix[row][j]);
}
row--;
// 右转并继续向右
if (direction == 0) { // 当前行未结束
direction = 1;
continue;
}
// 向上
for (j = row + 1; j < ROW; j++) {
printf("%d ", matrix[j][col]);
}
col--;
// 左转并继续向下
if (direction == 1) {
direction = 2;
continue;
}
// 向左
for (j = col - 1; j >= 0; j--) {
printf("%d ", matrix[row][j]);
}
row++;
// 右转并继续向左
if (direction == 2) {
direction = 3;
}
// 向上
for (j = row - 1; j >= 0; j--) {
printf("%d ", matrix[j][col]);
}
col++;
}
}
int main() {
int matrix[] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
int ROW = sizeof(matrix) / sizeof(matrix[0]), COL = sizeof(matrix[0]) / sizeof(matrix[0][0]);
zigzag(matrix, ROW - 1, COL - 1, 0); // 遍历顺序从左上到右下
return 0;
}
```
阅读全文