我試圖實現一個insertAfterNth
方法,它在雙向鏈表上的第n個元素(從1開始,不是0)之後插入一個元素。而且,我堅持將前一個節點設置爲我嘗試插入的節點。在解決問題時我需要一些幫助。謝謝。在雙向鏈表中插入元素
public class DListNode {
public DListNode next;
public DListNode prev;
public int item;
...
}
public void insertAfterNth(int n, int item) {
if (n > length() || n < 1) {
System.out.println("error: out of bounds");
return;
}
else if (n == length()) {
insertEnd(item);
}
DListNode walker = head;
int i = 1;
while (i != n) {
i++;
walker = walker.next;
}
DListNode node = new DListNode(item);
node.next = walker.next;
walker.next.prev = node; /* not sure if this line of code is right, regardless this method is giving me errors(I'm most certain that this line is causing the problem)*/
walker.next = node;
node.prev = walker;
size++;
}
看不到的問題,但你爲什麼不嘗試和'after'節點從那裏設置成'walker.next'和工作?代碼會更簡單。另外,將'walker'重命名爲''之前'。 – fge
原則上,代碼是可以的。但是您需要處理特殊情況以分別插入列表的前面或末尾。 – Henry