对二维数组进行Zig-Zag扫描(C++),先自定义了一个类,类中有个函数Run()来实现这个扫描过程,二维数组是动态分配空间以及随机赋值的。
下图是Zig-Zag扫描方式:
CZigZag.h:
#include<iostream>
using namespace std;
typedef struct CPoint
{
int x;
int y;
}Point;
class ZigZag
{
private:
const int M; //矩阵的行数
const int N; //矩阵的列数
Point p[4]; //4个扫描方向
int **arr; //指向二维矩阵的指针
public:
ZigZag(int m, int n): M(m), N(n)
{
Init();
}
~ZigZag();
void Init();
void Run();
int Jump(Point & cp, int i, int & c);
void DisplayArray();
void DisplayElement(Point p);
};
ZigZag::~ZigZag()
{
for(in