以下は、二重リンクリストの中間ノードを見つけるための私のコードですが、奇数のノードに対してのみ機能します。偶数のノードの場合の対処方法がわかりません。
public Object findMiddleNode() {
DLNode first = getHeadNode();
DLNode last = getTailNode();
while(first!=last) {
first = first.getNext();
last = last.getPrevious();
}
return first.getElement();
}
これは私の更新されたコードです:
public MyDequeue findMiddleNode() {
DLNode first = getHeadNode();
DLNode last = getTailNode();
MyDequeue m = new MyDequeue();
while(first!=last && first.getNext()!= last) {
first = first.getNext();
last = last.getPrevious();
}
if(first == last) {
m.insertLast(first.getElement());
return m;
}
else {
m.insertLast(first.getElement());
m.insertLast(last.getElement());
return m;
}
}
クラスMyDequeueは、二重リンクリストの実装です。MyDequeueを返した理由は、二重にリンクされたリストの要素を印刷する静的なprintメソッドがすでにあるためです。