刚开始学习节点,我有几个问题。比方说,我有一个节点类,看起来像这样:关于遍历,插入和删除节点的问题
private E number;
private Node next;
/**
* Constructor
*/
Node(E e){
number = e;
next = null;
}
和我有起始节点的一系列链接节点的第一个命名的,像这样:
第一 - >(1) - >(2 ) - >(3) - >(5) - >(6)
假设列表不为空,遍历目录,我会做一些像这样:
Node curr = first;
while(curr != null){
System.out.print(curr);
curr = curr.next;
}
我明白你不能像这样反向链接列表,所以这是否意味着每当我调用curr.next时,之前的元素都会丢失?
我还想知道,如果我的原始列表首先会受像curr这样的临时节点列表的影响吗?例如,如果我是插入或删除一个节点列表上类似于这些代码:
插入:
Node curr = first;
Node newNode = new Node(4);
while(curr != null){
if(curr.number == 3){
newNode.next = curr.next;
curr.next = newNode;
}
curr = curr.next;
}
删除:
Node curr = first;
Node parent = first;
while(curr != null){
if(curr.number == 3){
parent.next = curr.next;
}
parent = curr;
curr = curr.next;
}
请问上面的代码修改第一或在插入或删除更改后,是否需要设置first = curr;
?如果他们先修改,那么curr = curr.next;
怎么不先修改?如果我想返回删除的节点怎么办?我会只是做一些像curr.next = null;
然后return curr;
?
感谢您的回答!我想我明白了。如果引用它的任何内容被修改,“first”将会改变;否则,我将不得不更新它以发生更改。 –