# Zweidimensionales Array durchlaufen



## misaki (5. Jun 2011)

Hallo!

Ich habe einen Graph gegeben, mit einer Adjazenzliste. Also gegeben ist ein int[][]-Array, das folgendermaßen aussieht:

```
int[][] a = {{1},{0,2,3},{},{1}}
```
was so viel bedeutet wie Knoten 0 hat eine Kante zu 1
Knoten 1 hat eine Kante zu 0, 2 und 3
und Knoten 2 hat keine Kante usw.

Aber wie kann ich ein solches Array durchlaufen, wenn ich zum Beispiel daraus eine Adjazenzmatrix erstellen will?


----------



## Volvagia (5. Jun 2011)

Keine Ahnung was eine Adjazenzmatrix ist, aber Durchlaufen im allgemeinen so:


```
for(int[] subarray:a)
	for(int number:subarray)
		System.out.println(number);
```

Mehrdimensionale Arrays sind ja nur verschachtelte eindimensionale.


----------



## XHelp (5. Jun 2011)

du erstellst ein NxN array von z.B. boolean. Dann setzt du die Werte auf true, wo die Kante existiert. Den Index der Felder kannst du ja ohne Probleme mit 2 verschachtelten for-Schleifen ablesen.


----------



## misaki (5. Jun 2011)

Kann das dann so funktionieren?


```
for (int i = 0; i < adjazenzmatrix.length; i++) {
			for (int j = 0; j < adjazenzmatrix[].length; j++) { // durchlaufe gesamte Adjazenzmatrix
				for (int x = 0; x < a[].length; x++) { // durchlaufe alle Werte des zugehörigen Knotens
					if (a[i][x] == j) { // wenn es Kante zu der Zahl j gibt -> true
						adjazenzmatrix[i][j] = true;
					}
					else { // sonst false
						adjazenzmatrix[i][j] = false;
					}
				}
			}
		}
```

oder habe ich da einen denkfehler beim vergleichen ob eine kante existiert?


----------



## XHelp (5. Jun 2011)

Sieht auf den ersten Blick falsch aus. Ich dachte eher an:

```
//adjanzensmatrix initialisieren
for (int i=0;i<adjanzenzliste.length;i++){
  for (int j=0;j<adjanzensliste[i].length;j++) {
    adjanzensmatrix[i][adjanzensliste[i][j]]=true;
    //falls ungerichtet, dann fehlt hier noch das Gegenstück
  }
}
```


----------

