Odd Even Linked List
1.Given a singly linked list, group all odd nodes together followed by the even nodes. Please note here we are talking about the node number and not the value in the nodes.
Example:
Given 1->2->3->4->5->NULL
,
return 1->3->5->2->4->NULL
.
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* oddEvenList(ListNode* head) {
if( head == NULL || head->next == NULL)
return head;
ListNode* L = head;
ListNode* L1 = head->next;
ListNode* L2 = L1;
while(L1 && L1->next)
{
L->next = L1->next;
L = L->next;
L1->next = L->next;
L1 = L1->next;
}
L->next = L2;
return head;
}
};
比较巧妙的是L1循环后的链表为原先链表的偶数节点,所以最后只需要L->nxet = L2即可以达到最终所要得到的结果。