Sort a linked list using insertion sort.
代码如下:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
void swap(int* a, int* b)
{
int tmp = *a;
*a = *b;
*b = tmp;
}
struct ListNode* insertionSortList(struct ListNode* head) {
struct ListNode* ptr;
if(!head) return NULL;
for(ptr = head->next;ptr;ptr = ptr->next){
for(struct ListNode* tmp = head;tmp != ptr;tmp = tmp->next){
if(tmp->val > ptr->val) swap(&ptr->val, &tmp->val);
}
}
return head;
}