【发布时间】:2019-05-02 04:52:49
【问题描述】:
我正在尝试修改链表,使所有偶数出现在修改后的链表中的所有奇数之前。此外,保持偶数和奇数的顺序相同。
以下代码有效:
void segregateEvenOdd()
{
if(head==null) return;
Node temp=head,evenStart=null,evenEnd=null,oddStart=null,oddEnd=null;
while(temp!=null){
if(temp.data%2==0){
if(evenStart==null){
evenStart=temp;
//evenStart.next=null;
evenEnd=evenStart;
}
else{
evenEnd.next=temp;
evenEnd=evenEnd.next;
// evenEnd.next=null;
}
}
else{
if(oddStart==null){
oddStart=temp;
//oddStart.next=null;
oddEnd=oddStart;
}
else{
oddEnd.next=temp;
oddEnd=oddEnd.next;
//oddEnd.next=null;
}
}
temp=temp.next;
}
if(oddStart==null || evenStart==null) return;
evenEnd.next=oddStart;
oddEnd.next=null;
head=evenStart;
}
但是当我取消注释注释代码时,它不起作用。 我无法理解这种行为。 谁能解释一下?
【问题讨论】: