调整链表顺序使奇数位于偶数前面

来源:互联网 发布:看地方电视台的软件 编辑:程序博客网 时间:2024/05/08 04:52
    给定一个单链表,使得链表中奇数位于偶数之前。    解析:快排的思想,设置两个指针,p1指向最后一个奇数位置,p2指向当前位置,每当p2移动一位时,判断p2指向的元素是否为奇数,如果是奇数,则p2位置的元素和p1下一位置的元素交换,p1更新为p1->next。如果是偶数,则p2直接下移一位。时间复杂度为o(n)。
ListNode* oddEvenList01(ListNode* head) {if (head == NULL || head->next == NULL)return head;ListNode *q = NULL;ListNode *p = head;while (p){if (p->val & 1){if (q == NULL){swap(head->val, p->val);q = head;}else{q = q->next;swap(q->val, p->val);}}p = p->next;}return head;}
0 0
原创粉丝点击