📌  相关文章
📜  用于重新排列链接列表的Java程序,以使所有偶数和奇数位置的节点都在一起(1)

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

用于重新排列链接列表的Java程序,以使所有偶数和奇数位置的节点都在一起

本程序旨在通过Java语言编写一个可以将链表中的偶数位置节点和奇数位置节点分别放到一起的程序。该程序可以用于优化数据结构的性能和可读性。

主要思路

程序的主要思路是通过创建两个链表,一个用于存储奇数位置的节点,另一个用于存储偶数位置的节点,然后将这两个链表合并成一个链表,生成新的链表。

代码实现
/**
* Definition for singly-linked list.
* public class ListNode {
*     int val;
*     ListNode next;
*     ListNode(int x) { val = x; }
* }
*/
public class Solution {
    public ListNode oddEvenList(ListNode head) {
        if(head == 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;
    }
}
代码说明
  • 程序使用了两个指针odd和even来表示奇数位置和偶数位置的节点,odd指向第一个节点,even指向第二个节点。
  • 然后使用一个指针evenHead来表示偶数位置的起始位置。
  • 通过while循环不断地交替处理奇数位置和偶数位置的节点,用odd指针不断后移,表示将奇数位置的节点插入到新的链表中。而even指针同样也不断后移,并将偶数位置的节点插入到新的链表中。
  • 最终,将原始链表中的奇数位置节点和偶数位置节点全部插入到新的链表中,可以发现每个节点的位置变更了,形成了一个新的链表。
总结

本程序使用Java语言实现了重新排列链接列表的功能,即将奇数位置节点和偶数位置节点分开存储,并最终将链表重新排列。该程序可以用于改善数据结构的性能和可读性,为开发者提供更好的编码体验。