JAva単鎖テーブル反転
2331 ワード
一方向チェーンメーターを回転方向に送り、頭が尾になり、尾が頭になり、チェーンメーターをセットします.
構想:preが前のノード、curが現在のノード、nexが次のノードの3つの参照を定義します.curの次のノードをnexに一時保存し、curの次のノードをpreに向け、preをcurに向け、curをnexに向ける.curが空でない限り、ずっとこのように循環しています.curが空、すなわち最後のノードのnextノードが空になるまで.最後に元のチェーンテーブルのヘッダノードをテールノードにするので、nextノードをnullに設定します.
コード実装:
まず、最も簡単な単一チェーンテーブルデータ構造を定義します.構造は簡単で、Stringタイプのdataで、次のノードへの参照です.
出力結果:
{"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"}}}}}
構想: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"}}}}}