Danke für den Einblick in deinen Code. Was ich dort nicht ganz verstehe wofür last in List verwendet wird.
Leider weiß ich noch immer nicht die Lösung zu meinen Problem. Um das Problem verständlicher zu machen möchte ich erklären was mit diesem Code-Schnipsel umgesetzt werden soll.
Ich hatte die Idee das ich eine Tabelle erstelle die beim vertauschen von Zeilen und beim vertauschen von Spalten die innere Ordnung behält. Mein Ansatz sieht folgender Weise aus:
Die Tabelle wird so gespeichert
columnA --> columnB --> columnC
^ ^ ^
| | |
row1 --> cellA1 --> cellB1 --> cellC1
|
v
row2 --> ...
|
v
row3 --> ...
wenn ich nun zwei zeilen vertausche brauch ich nur die reihenfolge der rows zu ändern
columnA --> columnB --> columnC
^ ^ ^
| | |
row2 --> cellA2 --> cellB2 --> cellC2
|
v
row1 --> ...
|
v
row3 --> ...
wenn ich nun zwei spalten vertauschen ist dies schon komplizierter
columnB --> columnA --> columnC
row1 --> cellA1 --> cellB1 --> cellC1
|
v
row2 --> ...
|
v
row3 --> ...
hier zeigt cellA1 auf columnA und cellB1 auf columnB usw. Aber die Reihenfolge der cells ist nun nicht mehr ident mit der der columns. Um dieses Problem zu lösen müssen die columns auf die cells zurückzeigen.
Die Ausgabe der Tabelle funktioniert dann so:
Man geht jede Reihe durch
innerhalb der Reihe geht man jede Zelle ab
jede einzelne Zelle verweist schon grundsätzlich auf die ihre
zugehörige Spalte. Nun muss die Spalte nur mehr auf die Zelle
zurückverweisen.
jetzt geht man die Spalten der Reihenfolge nach ab und schaut auf
welche Zelle sie zurückverweisen und gibt sie wieder aus.
=> Spalten und Zeilenumformungen kann man so einfach durchführen indem man Zeilen oder Spalten vertauscht ohne die ihnen zugehörigen Zellen zu vertauschen.