JAva単鎖テーブル反転


一方向チェーンメーターを回転方向に送り、頭が尾になり、尾が頭になり、チェーンメーターをセットします.
構想:preが前のノード、curが現在のノード、nexが次のノードの3つの参照を定義します.curの次のノードをnexに一時保存し、curの次のノードをpreに向け、preをcurに向け、curをnexに向ける.curが空でない限り、ずっとこのように循環しています.curが空、すなわち最後のノードのnextノードが空になるまで.最後に元のチェーンテーブルのヘッダノードをテールノードにするので、nextノードをnullに設定します. 
コード実装:
まず、最も簡単な単一チェーンテーブルデータ構造を定義します.構造は簡単で、Stringタイプのdataで、次のノードへの参照です.
public class MyList {
    private MyList next;
    private String data;

    public MyList getNext() {
        return next;
    }

    public void setNext(MyList next) {
        this.next = next;
    }

    public String getData() {
        return data;
    }

    public void setData(String data) {
        this.data = data;
    }

    public MyList(String data) {
        this.data = data;
    }
}
public class ConverMyList {
    public static MyList conver(MyList myList) {
        if (myList == null) {
            System.out.println("error");
            return myList;
        }

        MyList pre = myList;
        MyList cur = myList.getNext();
        MyList nex;
        while (cur != null) {
            nex = cur.getNext();
            cur.setNext(pre);
            pre = cur;
            cur = nex;
        }
        myList.setNext(null);
        return pre;
    }

    public static void main(String[] args) {
        MyList myList = new MyList("a");
        MyList myList2 = new MyList("b");
        MyList myList3 = new MyList("c");
        MyList myList4 = new MyList("d");
        MyList myList5 = new MyList("e");
        myList.setNext(myList2);
        myList2.setNext(myList3);
        myList3.setNext(myList4);
        myList4.setNext(myList5);

        System.out.println(JSON.toJSONString(myList));
        //      
        MyList converList = conver(myList);
        System.out.println(JSON.toJSONString(converList));
    }
}

出力結果:
{"data":"a","next":{"data":"b","next":{"data":"c","next":{"data":"d","next":{"data":"e"}}}}} {"data":"e","next":{"data":"d","next":{"data":"c","next":{"data":"b","next":{"data":"a"}}}}}