我创建了双向圆形链接列表。双向链接列表
我需要知道每个节点到头部的距离。
因为当我必须删除或获取一个节点与特定键,如果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 –