插入元素DoubleLinked

时间:2016-06-30 13:24:50

标签: java

我正在研究一种方法,它将指定的元素插入到排序列表中的正确位置,我可以多次插入相同的元素。但是我的方法没有插入元素,我无法弄清楚为什么它没有将所有元素插入正确的位置!这是我的代码

2 个答案:

答案 0 :(得分:0)

请不要连续两次向StackOverflow发布相同的问题。而是编辑你的第一个问题。

首先,Java提供了一个基本的双向链表。您应该使用LinkedList<E>而不是尝试重新发明轮子。

无论如何,你有两个问题。首先,你有一个特殊的案例,可以在尾巴之前而不是尾巴之后插入东西。

if(current==tail){
    Node n = new Node(element);
    n.next = tail;
    tail = n;
    size++;
    return this;
}

这应该说

if(current == null){
    tail.next = d;
    d.pre = tail;
    tail = d;
    return this;
}

此外,您需要确保您实际上正在执行双向链接列表。也就是说,

n.next = head;
head = n;

需要

n.next = head;
head.pre = n;
head = n;

还有一件事 - 做二元搜索,而不是线性搜索。它太快了。

答案 1 :(得分:0)

您应该问问自己,您的foreach循环应该如何知道,如何访问列表中的值?也许它是在你的超类中实现的,但它也适用于你的特殊列表吗?

只是一个理论,因为我不知道你在BasicDoubleLinkedList<T>中实现了什么,但我想这就是你应该开始搜索的地方。

看看List<E>界面,有几种方法,你可以检查,如果它们都正确实现,我不这么认为。只要覆盖它们就可以解决你的问题。