给定一个单链表,对该链表进行插入排序。ListNode* insertionSortList(ListNode* head) { if (head == NULL || head->next == NULL) return head; ListNode *pHead = new ListNode(INT_MAX); pHead->next = head; ListNode *tail = head; ListNode *pre = pHead; ListNode *cur = head->next; tail->next = NULL; while (cur) { if (cur->val >= tail->val) { tail->next = cur; tail = tail->next; cur = cur->next; tail->next = NULL; continue; } while (pre->next != tail && pre->next->val < cur->val) { pre = pre->next; } ListNode *tmp = cur; cur = cur->next; tmp->next = pre->next; pre->next = tmp; pre = pHead; } return pHead->next; }
面试中常见链表问题9:对单链表进行插入排序
最新推荐文章于 2022-06-26 12:24:45 发布