我在使用迭代器移動雙向鏈表時遇到了家庭作業問題。以下是似乎是問題的方法,但對我來說在邏輯上看來是正確的。我有一個跑步者文件,我用它來傳遞一個列表,跑步者文件打印出向前和向後看我的鏈接是否正常工作。如果我使用add(T元素)方法添加一個項目,它可以很好地向前和向後工作。但是,如果使用add(T元素,int索引)方法添加項目,則列表將正確地向前輸出,但在向後迭代器中,新添加的項目不在輸出中。Java,雙鏈表:我的邏輯錯了嗎?
這讓我懷疑current.getNextNode().setPriorNode(newNode);
是問題,但它似乎對我來說是正確的,或者我錯了嗎?
謝謝你!
更新:我編輯了代碼修復程序,以防其他人在將來遇到同樣的問題。
public void add(T element) {
Node<T> node = new Node(element);
if (itsFirstNode == null) {
itsFirstNode = node;
itsLastNode = node;
}
else {
itsLastNode.setNextNode(node);
node.setPriorNode(itsLastNode);
itsLastNode = node;
}
size++;
} // end of add() method
public void add(T element, int index) {
int counter = 0;
Node<T> newNode = new Node(element);
Node<T> current = itsFirstNode;
while (current.getNextNode() != null) {
if (counter == index - 1)
break;
current = current.getNextNode();
counter++;
}
newNode.setNextNode(current.getNextNode());
current.getNextNode().setPriorNode(newNode);
newNode.setPriorNode(current);
current.setNextNode(newNode);
size++;
} // end of Overloaded add() method
謝謝你這麼它應該工作許多!我現在感覺很傻。如果我有正確的語法,那麼我忽略了一些如此簡單的東西,我非常在意。我只是抓住當前的價值,我把它設置到另一個節點? – Chip594