2026/3/1 12:42:16
网站建设
项目流程
asp.net 移动网站开发,网站开发广告语,手机友好型网站,中国乌镇互联网国际峰会思路分析
用两个指针分别指向「奇数链的尾节点」#xff08;odd#xff09;和「偶数链的尾节点」#xff08;even#xff09;#xff1b;遍历链表#xff0c;依次将奇数节点接入奇数链、偶数节点接入偶数链#xff1b;遍历结束后#xff0c;将偶数链的头节点拼接到奇数…思路分析用两个指针分别指向「奇数链的尾节点」odd和「偶数链的尾节点」even遍历链表依次将奇数节点接入奇数链、偶数节点接入偶数链遍历结束后将偶数链的头节点拼接到奇数链的尾部完成重排。步骤拆解以1→2→3→4→5→null为例初始化odd head奇数链头 / 尾初始为位置 1 的节点even head.next偶数链头 / 尾初始为位置 2 的节点evenHead even保存偶数链的头节点用于最后拼接遍历链表终止条件even null 或 even.next null奇数链后移odd.next even.next → odd odd.nextodd 从 1→3偶数链后移even.next odd.next → even even.nexteven 从 2→4拼接odd.next evenHead将偶数链拼到奇数链尾部返回原头节点head奇数链头就是最终链表头。代码实现publicListNodeoddEvenList(ListNodehead){// 边界条件空链表 或 只有一个节点直接返回if(headnull||head.nextnull){returnhead;}// 1. 初始化指针ListNodeoddhead;// 奇数链尾指针初始为位置1ListNodeevenhead.next;// 偶数链尾指针初始为位置2ListNodeevenHeadeven;// 保存偶数链的头节点关键最后拼接用// 2. 遍历分离奇偶链终止条件even为空 或 even.next为空while(even!nulleven.next!null){// 奇数链后移接下一个奇数节点even.next是位置3odd.nexteven.next;oddodd.next;// 偶数链后移接下一个偶数节点odd.next是位置4even.nextodd.next;eveneven.next;}// 3. 拼接偶数链拼到奇数链尾部odd.nextevenHead;// 4. 返回原头节点奇数链头就是最终头returnhead;}复杂度分析空间复杂度 O (1)仅用了额外的指针变量时间复杂度O (n)每个节点仅遍历一次。