给定一个链接列表和目标值t,将其划分为以使得所有小于t的节点均在大于或等于目标值t的节点之前列出。
我发现理解代码对我有些困惑。
while(head!=null){
if(head.value<target){
curSmall.next=head;
curSmall=curSmall.next;
} else{
curLarge.next=head;
curLarge=curLarge.next;
}
head=head.next;
}
curSmall.next=large.next;
curLarge.next=null;
return small.next;
我只是不了解这两个部分large.next
和return small.next
?换句话说,当我们连接大小链接列表时,curSmall.next
-> large.next
,为什么我们将大。为什么我们需要返回small.next
?
例如,在该代码的循环之后,两个链接列表如下。
dummy_head(small( - &gt; a-&gt; c-&gt; d
dummy_head(大( - &gt; f-&gt; h
和Cursmall和Curlarge分别指向节点" D"one_answers" H"。因此,您可以在以下步骤中获得所需的链接列表。
- 小链接列表附加了大链接列表=&gt;cursmall.next = ligh.next;
- 大型链接列表点的尾部节点" H"指向null =&gt;curlarge.next = null;
- 返回整个链接列表=&gt的头节点'a';返回small.next;