2012-04-10 4 views
0

Comment est-ce que je peux itérer sur une grille de données bidimensionnelle liée quadruple comme s'il s'agissait d'un tableau à deux dimensions?Comment est-ce que je peux itérer sur une grille de données bidimensionnelle liée quadruple comme s'il s'agissait d'un tableau bidimensionnel?

Ma structure de grille est:

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; 

Je dois pouvoir itérer sur cette grille comme il est un tableau à 2 dimensions ainsi je peux afficher des tuiles de la carte sur l'écran de centrage autour du bloc de départ .

P.S.S. Je préférerais voir une solution en C, (c'est ce que je suis en train de coder pour ce projet), C++, Haskell, ou le code Java car ce sont des langues que je connais bien, mais n'importe quelle langue est bonne. J'ai juste besoin de l'algorithme.

P.S.S.S. Pour plus de clarté, en parcourant comme un tableau à deux dimensions, je veux dire que j'ai besoin d'un index dans la position x et y comme variables. Par exemple, j'ai besoin de faire appel à mvaddch (y, x, '#').

Répondre

1

cela itérer dans le même ordre que si elle était un tableau à 2 dimensions

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; 
    } 
+0

Ajout d'une explication de ce que je dois au-dessus, je dois x et y sont des variables aussi bien. –

+0

Je déboguais ça et ça marche presque mais ne s'arrête pas en atteignant le fond. Je pense que je serai capable de le réparer si. Modifier: NVM. C'est une erreur dans la génération des grilles. –

+0

Ahah! J'ai trouvé l'erreur. La petite ligne de leftmost = processus devrait être incluse après le processus de réglage = leftmost-> ci-dessous. Je ne connais pas l'étiquette pour cela. Si je devais attendre que vous changiez la ligne et que j'accepte le post, si je devais éditer le post et le placer dans la file d'édition ou si faire quelque chose d'autre. –

Questions connexes