Sort a linked list using insertion sort.
class Solution {
public:
ListNode *insertionSortList(ListNode *head) {
if(head == NULL || head -> next == NULL) return head;
ListNode *p = head;
ListNode *pnext;
ListNode *pos;
ListNode *dummyHead = new ListNode(-1);
dummyHead -> next = NULL;
while(p){
pnext = p -> next;
pos = findInsertPos(dummyHead, p -> val);
p ->next = pos -> next;
pos -> next = p;
p = pnext;
}
return dummyHead -> next;
}
ListNode *findInsertPos(ListNode *head,int val){
ListNode *pre = head;
ListNode *next = head -> next;
while(next && next -> val <= val){
pre = next;
next = next -> next;
}
return pre;
}
};
本文介绍了一种使用插入排序算法对链表进行排序的方法。通过遍历链表并将每个节点插入到已排序部分的适当位置来实现排序过程。具体步骤包括创建虚拟头结点、寻找插入位置等。
312

被折叠的 条评论
为什么被折叠?



