奇偶链表
今天给大家讲一下奇偶链表
所谓奇偶链表就是把链表的奇数节点与偶数节点分开并把奇数节点排在偶数节点之前形成新的链表如图:
我的思路:
1.首先我们要来两个指针ji=head和ou=head.next并且ou1=ou
2.我们当ou!=null&&ou.next!=null时让ji.next=ji.next.next,ou.next=ou.next.next
3.移动ji和ou,ji=ji.next,ou=ou.next;
4.最后我们让ji.next=ou1就行了
走走流程
- ji=1,ou=2
- ji.next=ji.next.next 1->3
- ou.next=ou.next.next 2->4
- ou=ou.next ji=ji.next ji=3 ou=4
- ji.next=ji.next.next 1->3->5
- ou.next=ou.next.next 2->4 ->null
- ou=ou.next=5 ji=ji.next=5
- ou.next=null结束循环
- ji.next=ou1 1->3->5->2->4
- 返回head
上代码:
class Solution {
public ListNode oddEvenList(ListNode head) {
if(head==null){
return null;
}
ListNode ji=head;
ListNode ou=head.next;
ListNode oucopy=ou;
while(ou!=null&&ou.next!=null){
ji.next=ji.next.next;
ou.next=ou.next.next;
ou=ou.next;
ji=ji.next;
}
ji.next=oucopy;
return head;
}
}