📌  相关文章
📜  重新排列链表,使所有偶数和奇数定位节点都在一起(1)

📅  最后修改于: 2023-12-03 15:42:06.594000             🧑  作者: Mango

重新排列链表,使所有偶数和奇数定位节点都在一起

本题目的主要目的是要求在链表中将奇数节点和偶数节点分别排列在一起,并且每个节点的顺序要和原链表保持一致。

解题思路
  1. 首先,可以遍历一次原链表,将奇数节点和偶数节点分别保存在两个数组中。
  2. 然后,创建一个新的链表,分别将奇数节点和偶数节点插入到新链表中,插入顺序为奇数节点->偶数节点。
  3. 最后,将新链表连接到原链表的末尾。
代码实现

下面是Java语言的实现代码:

public ListNode oddEvenList(ListNode head) {
    if(head == null || head.next == null) {
        return head;
    }
    ListNode odd = head; // 奇数节点链表的头节点
    ListNode even = head.next; // 偶数节点链表的头节点
    ListNode evenHead = even; // 偶数节点链表的尾节点

    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;
}
总结

本题是一道比较基础的链表操作题目,主要是考察对链表的基本操作和指针的理解掌握程度。在实现代码时,需要注意指针的指向和顺序,尤其是在将奇数节点和偶数节点插入到新链表中时,需要保证节点的顺序和原链表保持一致。