leetcode328奇偶链表

发布时间 2023-07-11 15:42:54作者: iu本u

思路:先将寄链表连接起来;再将偶链表连接起来;最后将寄链表和偶链表一起连起来。

首先需要一个指针结构体去记录下偶链表的表头。最后才能将两个链表连接起来。

 

ListNode* odd=head;
LisrNode* even=head->next;
ListNode* evenhead=head->next;//必须这么做,每个链表表头必须用另外的一个结构体保存,不能和任何的其他链表混合
while(even->next){
    odd->next=even->next;
    odd=odd->next;
    if(odd->next){
        even->next=odd->next;
        even=eve->next;
    }
}

//连接之前要将偶链表的最后尾部置为空指针
even->next=nullptr;
odd->next=evenhead;

当使用一个空指针的next时,会报错。

改进时间版,少用if

while(even&&even->next){
    odd->next=even->next;
    odd=odd->next;
    even->next=odd->next;
    even=even->next;
}
//相当于三个节点为一组执行这样的操作
//最后的even一定是空指针,不用最后将尾部置为空指针