Leetcode: 328. 奇偶链表
解法:设置一个标记位isOdd,因为开始从链表第一个元素遍历,因而isOdd初始值设为true,每遍历一个元素,isOdd=!isOdd,当isOdd为true,遍历到的元素插入到奇链表的尾部,当isOdd为false,元素插入到偶链表尾部,最终失去一个奇链表和偶链表,将奇链表的尾元素的下一个地位指向even.next。留神:偶链表的最初一个元素的next要设置为null,否则会呈现循环链表。
class Solution { public ListNode oddEvenList(ListNode head) { ListNode odd = new ListNode(-1),oddTail = odd; ListNode even = new ListNode(-1),evenTail = even; boolean isOdd = true; while(head != null){ if(isOdd == true){ oddTail.next = head; oddTail = oddTail.next; }else{ evenTail.next = head; evenTail = evenTail.next; } head = head.next; isOdd = !isOdd; } evenTail.next = null; oddTail.next = even.next; return odd.next; } }