/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
typedef struct ListNode Node;
struct ListNode* insertionSortList(struct ListNode* head) {
if(head==NULL||head->next==NULL)
return head;
Node*sortHead=head;//将头结点取出,作为新链表的头结点
Node*cur=head->next;
sortHead->next=NULL;
while(cur){
Node*next=cur->next;
//把cur插入到sortHead中,并保持有序
if(cur->val<=sortHead->val){
//头插
cur->next=sortHead;
sortHead=cur;
}else{
//中间插
Node*sortPrev=sortHead;
Node*sortCur=sortPrev->next;
while(sortCur){
if(cur->val<=sortCur->val){
sortPrev->next=cur;
cur->next=sortCur;
break;
}else{
sortPrev=sortCur;
sortCur=sortCur->next;
}
}
//尾插
if(sortCur==NULL){
sortPrev->next=cur;
cur->next=NULL;
}
}
cur=next;
}
return sortHead;
}
【数据结构】【链表代码】对链表的插入排序
最新推荐文章于 2024-10-07 14:53:51 发布