【leetcode】单链表的插入排序

来源:互联网 发布:nginx ssl 无响应 编辑:程序博客网 时间:2024/05/17 08:57
单链表的直接插入排序排序思想跟数组的插入排序的思想是一样的。但是这里涉及到链表的插入删除等等,一些操作,实现起来还是稍微麻烦的。
链表的直接插入:
情况1:当前结点的值大于上一个结点的值,不用处理,直接去处理下一个结点;

情况2:当前结点的值小于第一个结点的值,将当前结点插入到链表的开始。


情况3:不满足上述两种情况的情况。也就是当前结点的值大于第一个结点的值,小于上一个结点的值时。


代码实现:

class Solution {public:    ListNode *insertionSortList(ListNode *head) {         if(head==NULL)            return head;        ListNode* newHead = head;        ListNode* cur = head->next;ListNode* prev = head;while(cur){if(cur->val >= prev->val){               cur = cur->next;prev = prev->next;}else if(cur->val < newHead->val){prev->next = cur->next;//移除结点curcur->next = newHead;//cur头插到链表中               newHead = cur;//改变排序链表的headcur = prev->next;}else{head = newHead;while(head->next->val < cur->val)//head对应的结点的值小于cur的值{head = head->next;}prev->next = cur->next;cur->next = head->next;head->next = cur;cur = prev->next;}}return newHead;             }};


1 0
原创粉丝点击