我目前正在编写双向链表的实现,并且无法将节点设置为某个值。由于节点中的数据是最终的,我需要替换整个节点,但我为此编写的代码似乎正在工作,直到它退出方法并且原始列表根本没有被更改。这里的代码中是否有任何我遗漏的内容?
`public void set(int index, String item) {
if (index < 0 || index >= this.size) {
throw new IndexOutOfBoundsException();
}
Node curr = this.front;
for (int i = 0; i < index; i++) {
curr = curr.next;
}
Node temp = new Node(item);
temp.prev = curr.prev;
temp.next = curr.next;
curr = temp;
}`
答案 0 :(得分:1)
您还应该更改“上一个节点的next
”和“下一个节点的”prev
“。假设prev
是cur
的上一个节点,而next
是cur
的下一个节点。
Node temp = new Node(item);
temp.prev = prev;
temp.next = next;
next.prev = temp;
prev.next = temp;
你应该处理边缘问题。
答案 1 :(得分:0)
你可以
System.out.println(curr.val);
并且您发现打印实际上与项目
相同但是当你回来时,你将找不到任何改变
你只需要找到curr的前节点并设置pre.next = curr(在哪里更改)
`public void set(int index, String item) {
if (index < 0 || index >= this.size) {
throw new IndexOutOfBoundsException();
}
Node curr = this.front;
for (int i = 0; i < index; i++) {
curr = curr.next;
}
Node temp = new Node(item);
temp.prev = curr.prev;
temp.next = curr.next;
curr = temp;
//here you need to set maybe
// Node tmp=curr.prev;
// tmp.next=curr;
}`