c++ 二维数组怎样螺旋式遍历
时间: 2024-09-21 15:13:20 浏览: 46
螺旋式遍历二维数组(矩阵)Demo
在 C++ 中,要实现二维数组的螺旋式遍历,通常采用四条边界(上、下、左、右)的方式来移动指针,依次访问每个元素。以下是螺旋遍历的一种常见实现方法:
```cpp
#include <iostream>
void spiralTraversal(int m, int n, int grid[][n]) {
int i = 0, j = 0; // 初始化起始位置
while (i < m && j < n) {
// 从左到右打印第一行
for (int k = j; k < n; ++k) {
std::cout << grid[i][k] << " ";
}
i++;
// 从上到下打印第二行
for (int k = i; k < m; ++k) {
std::cout << grid[k][n - 1] << " ";
}
n--;
// 如果还有剩余,从右到左打印第三行
if (i < m) {
for (int k = n - 1; k >= j; --k) {
std::cout << grid[m - 1][k] << " ";
}
m--;
}
// 最后如果还有剩余,从下到上打印第四行
if (j < n) {
for (int k = m - 1; k >= i; --k) {
std::cout << grid[k][j] << " ";
}
j++;
}
}
}
// 示例
int main() {
int size = 4;
int arr[size][size] = {{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
{13, 14, 15, 16}};
spiralTraversal(size, size, arr);
return 0;
}
```
运行上述代码,会按照螺旋的方式打印出给定二维数组的元素。
阅读全文