二重円リンクリストを作成しました。二重円リンクリスト
私は頭にすべてのノードからの距離を知る必要があります。
2つのノードが同じキーと同じ距離を持っている場合、私は、特定のキーを持つノードを削除するか、または取得しなければならないときなので、両方が削除されたか、だ、そうでない場合は頭部に最も近いノードを削除する必要がありますする必要があります。
円形であるので、私は距離を計算する方法がわからない...
このように、このリンクリストの仕事の挿入。
すべてのノードは、ヘッドの後に行きます。
例:
1)ヘッド
2)ヘッド-A(挿入A)
3)ヘッド-BA(挿入B)
4)ヘッド-CBA(挿入C)今の
は、私は距離なしでのみ、通常のキャンセルをしました。 これは私のコードです。
/* Function to delete node with the key */
public void deleteWithKey(int key) {
if (key == head.getData()) {
if (size == 1) {
head = null;
end = null;
size = 0;
return;
}
head = head.getLinkNext();
head.setLinkPrev(end);
end.setLinkNext(head);
size--;
return;
}
if (key == end.getData()) {
end = end.getLinkPrev();
end.setLinkNext(head);
head.setLinkPrev(end);
size--;
}
Node current = head.getLinkNext();
for (int i = 2; i < size; i++) {
if (key == current.getData()) {
Node p = current.getLinkPrev();
Node n = current.getLinkNext();
p.setLinkNext(n);
n.setLinkPrev(p);
size--;
return;
}
current = current.getLinkNext();
}
System.out.println("Don't exist a node with this key");
}
ありがとうございます。
なぜそれが距離を計算する問題ですか? –
円形ですので。すべてのノードは左右にリンクされています。私は頭から各ノードまでの距離を知る必要があります。 –
例:リストがあります。ヘッドB-A、B、Aは同じ距離です。 AはHeadとリンクしているからです。 A <-->ヘッド<--> B <---> A –