我实现了选择排序,我需要交换元素。 我有双重链接列表与上一个和下一个链接。 和链接列表 我总是需要交换一些节点b
与第一个节点toStartFrom
交换元素双向链表
public void Swap(Node toStartFrom, Node b) {
Boolean NextToEachOther = (toStartFrom.next == b);
toStartFrom.next = b.next;
b.previous = toStartFrom.previous;
if (NextToEachOther) {
toStartFrom.previous = b;
b.next = toStartFrom;
} else {
toStartFrom.previous = b.previous;
b.next = toStartFrom.next;
}
}
public void display() {
Node current = first;
while (current != null) {
...printing...
current = current.next;
}
}
但它不工作的第一个和最后一个元素。 没有错误只是不正确的顺序排序。 而不是在toStartFrom
节点之后排序后显示任何元素。
当您在简单数据集中的调试器中遍历代码时,您观察到了什么? –
此外,对于其中一个元素保证为头部的双向链表,您将需要更新6个引用。画一张图片,看看为什么。 –
在调试中,确定它们在调试时交换过,也许我有一个显示问题。 – Nikita