题解 | #链表的奇偶重排#
链表的奇偶重排
https://www.nowcoder.com/practice/02bf49ea45cd486daa031614f9bd6fc3
import java.util.*;
/*
* public class ListNode {
* int val;
* ListNode next = null;
* public ListNode(int val) {
* this.val = val;
* }
* }
*/
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param head ListNode类
* @return ListNode类
*/
public ListNode oddEvenList (ListNode head) {
// 依然使用双指针
if(head == null){
return head;
}
// 指向链表第二个节点
ListNode even = head.next;
// 指向开头第一个节点
ListNode odd =head;
// 指向even开头
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;
}
}
采用双指针,一个指针为偶指针,一个指针为奇指针,同时再定义指针记录第一个偶数节点,然后进行拼接
