Sort a linked list using insertion sort.
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* insertionSortList(struct ListNode* head) {
struct ListNode *L,*p,*tmp;
if(!head || !head->next) return head;
p = head->next;
L=head;
L->next = NULL;
while(p)
{
tmp=p;
p=p->next;
if(tmp->val < head->val)
{
tmp->next=head;
head=tmp;
}
else{
while(tmp->val > L->val)
{
if(!L->next) break;
if(L->next->val < tmp->val) L=L->next;
else break;
}
tmp->next=L->next;
L->next=tmp;
}
L=head;
}
return head;
}
直接插入排序。双指针?
本文介绍了一种使用插入排序算法对链表进行排序的方法。通过双指针技术实现,确保了链表元素按升序排列。文章详细展示了排序过程,并提供了完整的代码实现。
158

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



