0

我如何像二维数组一样迭代四重链接的二维数据网格?

我的网格结构是:

typedef bool tile;

struct BLOCK;
typedef struct BLOCK block;

struct BLOCK {
 const block * to_the_left;
 const block * above;
 const block * to_the_right;
 const block * below;

 tile data;
};

typedef struct {
 const block * start;
} map;

我需要能够像二维数组一样遍历这个网格,这样我就可以在屏幕上以起始块为中心显示地图的图块。

PSS 我最希望看到 C 中的解决方案(这是我为这个项目编写的代码)、C++、Haskell 或 Java 代码,因为这些都是我熟悉的语言,但任何语言都可以。我只需要算法。

PSSS 为清楚起见,通过像二维数组一样迭代,我的意思是我需要获取 x 和 y 位置的索引作为变量。例如,我需要调用 mvaddch(y,x,'#')。

4

1 回答 1

1

这将以与二维数组相同的顺序迭代

    BLOCK * process = upper_left_block;
    BLOCK * leftmost = process;
    while(true)
    {
        //<do stuff here>
        process = process->to_the_right;
        if(process == null)
        {
            process = leftmost->below;
            leftmost = process;
        }
        if(process == null)
            break;
    }
于 2012-04-10T22:56:47.637 回答