【发布时间】:2017-06-22 23:25:22
【问题描述】:
刚开始学习节点,我有几个问题。假设我有一个如下所示的节点类:
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; 的事情吗?
【问题讨论】: