我創建了雙向圓形鏈接列表。雙向鏈接列表
我需要知道每個節點到頭部的距離。
因爲當我必須刪除或獲取一個節點與特定鍵,如果2個節點具有相同的密鑰和相同的距離,兩者都必須被刪除或獲得,否則必須刪除最接近頭節點。
我不知道如何計算距離,因爲是圓形的......
這樣這個鏈表工作的插入。
所有節點後頭部去。
實施例:
1)頭部
2)頭 - 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");
}
感謝所有。
爲什麼它來計算的距離的問題? –
因爲是循環的。每個節點都鏈接到左側和右側。我需要知道從頭到每個節點的距離。 –
示例:我有一個列表Head-B-A,B和A的距離相同。因爲A與Head關聯。將是A <-->頭<--> B <---> A –