0

4 重にリンクされた 2 次元グリッドのデータを 2 次元配列であるかのように反復処理するにはどうすればよいですか?

私のグリッド構造は次のとおりです。

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;

このグリッドを 2 次元配列のように反復できるようにする必要があるため、開始ブロックを中心に画面にマップのタイルを表示できます。

PSS C (これは私がこのプロジェクトのためにコーディングしているものです)、C++、Haskell、または Java コードで解決策を見たいと思っています。これらは私がよく知っている言語ですが、どの言語でも問題ありません。アルゴリズムが必要なだけです。

PSSS わかりやすくするために、2 次元配列のように反復することで、変数として x と y の位置にインデックスを取得する必要があることを意味します。たとえば、mvaddch(y,x,'#') を呼び出す必要があります。

4

1 に答える 1

1

これは、2 次元配列であるかのように同じ順序で繰り返されます

    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 に答える