28. 奇偶链表
题目:给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性
解法:双指针
代码:
/**
- Definition for singly-linked list.
- public class ListNode {
-
int val; -
ListNode next; -
ListNode() {} -
ListNode(int val) { this.val = val; } -
ListNode(int val, ListNode next) { this.val = val; this.next = next; } - }
*/
class Solution {
public ListNode oddEvenList(ListNode head) {
if(headnull){
return null;
}
if(head.nextnull||head.next.next==null){
return head;
}
ListNode p1=head,p2=head.next,q=head.next;
while(p2!=null&&p2.next!=null){
p1.next = p2.next;
p1 = p2.next;
p2.next = p1.next;
p2 = p1.next;
}
p1.next = q;
return head;
}
}
注意:循环结束条件及结束后的处理需要认真考虑

浙公网安备 33010602011771号