题解 | #链表的奇偶重排#
import java.util.*;
/*
- public class ListNode { //节点类
- int val;
- ListNode next = null;
- public ListNode(int val) { //有参构造
- this.val = val;
- }
- }
- /
class Solution {
public ListNode oddEvenList(ListNode head) {
//边界条件, 头结点为空,或者头结点的下一个节点为空。
if (head == null || head.next == null) {
return head;
}
//偶数
ListNode evenHead = head.next;
ListNode odd = head, even = evenHead;
while (even != null && even.next != null) {
odd.next = even.next;
odd = odd.next;
even.next = odd.next;
even = even.next;
}
odd.next = evenHead;
return head;
}
}
import java.util.*;
/*
- public class ListNode {
- int val;
- ListNode next = null;
- public ListNode(int val) {
- this.val = val;
- }
- }
- /
class Solution {
public ListNode oddEvenList(ListNode head) {
if (head == null || head.next == null) {
return head;
}
//偶数链表表头从head的下一个开始
ListNode evenHead = head.next;
//奇数链表表头从head开始
ListNode odd = head, even = evenHead;
//当偶数链表不为空且偶数链表的下一个数不为空时进入循环
while (even != null && even.next != null) {
odd.next = even.next;
odd = odd.next;
even.next = odd.next;
even = even.next;
}
//将维护好的偶数链表表头赋值给奇数链表的最后一个节点值的下一个。
odd.next = evenHead;
return head;
}
}
