Insertion Sort List 链表插入排序

来源:互联网 发布:手机淘宝客服怎么设置 编辑:程序博客网 时间:2024/05/15 18:32

题目:

Sort a linked list using insertion sort.

解答:

千万不要给链表插入排序啊  真TM的麻烦

先从链表中删除一个节点  然后把被删除节点插入到链表中,关键判断什么时候更新链表的有序尾。。。


代码:

/** * Definition for singly-linked list. * struct ListNode { *     int val; *     ListNode *next; *     ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public:ListNode *tail;ListNode *insertionSortList(ListNode *head) {if (head == NULL)return head;tail = head;while(tail->next != NULL){ListNode *node = tail->next;tail->next = tail->next->next;head = insert(head, node);}return head;}ListNode* insert(ListNode *head, ListNode *node){if (node->val <= head->val){node->next = head;head = node;}else{ListNode *temp = head;while (1){if ((temp == tail) ||(temp->val < node->val && temp->next->val >= node->val)){node->next = temp->next;temp->next = node;
<span style="white-space:pre"></span>//特别注意在这里更新尾部if (temp == tail)tail = node;break;}else{temp = temp->next;}}}return head;}};


0 0
原创粉丝点击