这是我目前所看到的:
public void insert(int position, ValueNode value) {
if (position == 1) {
this.nextInRow = value;
}
ValueNode current = this.getFirst();
if (position > 1) {
current.setNext(current.next);
}
value.setNextInRow(current.getNext());
}
头节点正在用第一个if语句正确设置。在这个列表中,我们已经知道了位置,所以我认为我们不需要while循环,因为我们知道在哪里放置新节点。
我创建了一个名为current的临时节点来保存下一个节点指针,但现在它将指针设置为null。我的问题是我不知道下一个节点指针指向哪里。任何帮助都会非常感激。
区分有值创建节点和设置下一个节点的操作。
你的数据结构可以像这样:
class Node {
int val;
Node next;
Node previous;
//setters and getters and constructors
}
1)对于所有的新值应该有一个节点
Node createNode(int val) {
Node newNode = new Node(val);
newNode.next = null;
newNode.previous = null;
return newNode;
}
2)从根节点开始定位新节点或保持当前节点,将其设置为下一个
currentNode.setNext(Node newNode);
//iterate the currenNode with newNode
currentNode = newNode;
...
// implement the setNext and mark current as previous for newNode
void setNextNode(Node newNode) {
this.next = newNode;
newNode.setPrevious(this);
}