dimanche 3 mai 2015

Arbeiten mit Lists

Hallo! Ich muss eine rotate() Methode schreiben, die je drei Elemente in einer LinkedList rotiert. Aus " a b c d e f g h i j k " wird also " c a b f d e i g h j k ". Ich habe einen Code aber leider spinnt der rum.. Ich verzweifle langsam da ich seit zwei Tagen dran sitze. Das Problem ist das Erstellen des neuen Zeigers hinter der ersten Dreiergruppe.
Bin ein absoluter Anfänger. Muss es einmal Iterativ und einmal rekusriv machen. Mein Code:

Code:

public void rotateTriplesIter() {   
    int count = 0;
    ListItem<T> temp = first;
    ListItem<T> temp2 = null;
    ListItem<T> buffer = null;


   
    for (ListItem<T> p = first; p != null; p = p.next) {
       
        count = count + 1;
    }
   
    for (int i = 0; i <= count; i++){
       
        if (i % 3 == 0){
           
            if ( temp != null && temp.next != null && temp.next.next != null) {
           
            temp2 = temp.next;
            buffer = temp2.next;
          temp2.next = buffer.next;
            buffer.next = temp;
           
            }
           
        }


    }
   
}

Wenn ich folgendes durchlaufen lasse: ListItem[Ada, Bernhard, Charles, Domian, Eduard, Ferdinant, Yasen, Zora]

Erhalte ich: ListItem[Ada, Bernhard, Ferdinant, Yasen, Zora]


Arbeiten mit Lists

0 commentaires:

Enregistrer un commentaire