链表的奇偶重排
描述
给定一个单链表,请设定一个函数,将链表的奇数位节点和偶数位节点分别放在一起,重排后输出。注意是节点的编号而非节点的数值。
解题
单链表
public class ListNode {
int val;
ListNode next=null;
public ListNode(int val) {
this.val = val;
}
}
Solution
/**
* 奇偶序号链表转换
* 拆分链表方法
*/
public class Solution {
public ListNode oddEvenList(ListNode head){
if (head==null||head.next==null) return head;
ListNode evenHead=head.next;//记录当前偶序号节点头部
ListNode odd=head,even=head.next;
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;
}
}