![](/img/trans.png)
[英]Doubly-linked list insertion sort function: Why isn't my insertion sort function inserting the last two integer inputs into my linked list?
[英]Why is my doubly-linked list repeating on insertion?
我的代码生成了我无法完全理解的奇怪答案。 例如,我的insert方法似乎只是重复我进行的第一次插入,而无视列表的大小以及在列表之后进行的所有插入调用。
public class LinkedListImpl implements LIST_Interface {
Node sentinel;
private int numElts;
public LinkedListImpl(){
sentinel=new Node(0);
numElts = 0;
}
public boolean insert(double elt, int index) {
Node temp = new Node(elt);
Node currentNode;
int x;
if(index > size()) {
return false;
}
else if(index == 0){
currentNode = sentinel;
if(size() == 0) {
currentNode.prev = temp;
temp.next = sentinel;
}
currentNode.next = temp;
temp.prev = currentNode;
numElts++;
return true;
}
else {
currentNode = sentinel;
for(x = 0; x < index; x++) {
currentNode = currentNode.next;
}
temp = currentNode;
currentNode.prev = temp;
temp.next = currentNode;
numElts++;
return true;
}
}
public double get(int index) {
Node currentNode;
int x;
if(numElts == 0) {
return Double.NaN;
}
else {
currentNode = sentinel;
for(x = 0; x < index; x++) {
currentNode = currentNode.next;
}
return currentNode.getData();
}
}
}
public int size() {
return numElts;
}
这段代码在这里:
LinkedListImpl L= new LinkedListImpl();
L.insert(45.0, 0);
L.insert(13.0, 1);
L.insert(89, 2);
System.out.println("Size of the list: " + L.size());
System.out.println(L.get(0));
System.out.println(L.get(1));
System.out.println(L.get(2));
System.out.println(L.get(3));
返回值:
Size of the list: 3
0.0
45.0
45.0
我不明白为什么45.0不是L.get(0)
的第一个条目
我也不明白为什么它会一遍又一遍地复制45.0。 如果我使用for循环将L.get(x)
打印为0 <= x <= 10
,则从x = 2
到x = 10
仍将重复45.0。
一方面,您没有设置所有引用。 要将newNode
插入prevNode
和nextNode
之间的双向链接中,您需要更改以下引用:
prevNode.next
newNode.prev
newNode.next
nextNode.prev
您的代码仅设置其中的一部分。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.