以下是我查找双链表中间节点的代码,但它仅适用于奇数个节点。我不知道如何处理偶数节点的情况:
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 的原因是因为我已经有了一个打印双向链表元素的静态打印方法。