思路:
1 小于3个元素的,直接返回原有head
2 大于等于3个元素的
while循环{
2.1 建立odd 链表
2.2 建立even链表
}
odd链表尾部指针指向even链表的头部
3 返回head
代码如下:
/**
* 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 || head.next == null) {//元素个数<3,直接返回头
return head;
}
ListNode even = head.next, odd = head, evenHead = head.next;
while(even != null && even.next != null) { //元素个数>=3&&循环能继续(even.next有值)
odd.next = even.next; //odd元素指针指向even的下一个元素
odd = odd.next; //odd指针后移
even.next = odd.next; //even元素指向odd的下一个元素
even = even.next; //even指针后移
}
odd.next = evenHead;//对接odd尾和even的头
return head;
}
}
奇偶链表重组
本文介绍了一种在链表中按奇偶顺序重新排列节点的方法。通过遍历链表,将奇数位置的节点组成一个链表,偶数位置的节点组成另一个链表,最后将两个链表连接起来。适用于链表节点数量大于等于3的情况。
491

被折叠的 条评论
为什么被折叠?



