我的代码产生奇怪的答案,我无法完全理解。例如,我的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。
答案 0 :(得分:0)
首先,您没有设置所有引用。要将newNode
插入prevNode
和nextNode
之间的双向链接,您需要更改以下参考:
prevNode.next
newNode.prev
newNode.next
nextNode.prev
您的代码只会设置其中的一部分。