我正在研究一种方法,它将指定的元素插入到排序列表中的正确位置,我可以多次插入相同的元素。但是我的方法没有插入元素,我无法弄清楚为什么它没有将所有元素插入正确的位置!这是我的代码
答案 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>
界面,有几种方法,你可以检查,如果它们都正确实现,我不这么认为。只要覆盖它们就可以解决你的问题。