147. Insertion Sort List

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* insertionSortList(ListNode* head) {
        if (head == NULL)
		return NULL;
	ListNode*L = new ListNode(0);//設置一個頭結點,便於插入排序;
	ListNode*p = NULL, *q = NULL,*s=NULL;
	/*L->next = head;*/
	while (head != NULL)
	{
		s = L;//記住插入位置的前驅便於插入
		q = L->next;//每次插入從第一個結點開始
		p = head;//插入的結點
		head = head->next;//下一個插入的結點
		while (q != NULL&&p->val > q->val)
		{
			s = q;
			q = q->next;
		}
		s->next = p;
		p->next = q;
		
	}
	return L->next;
    }
};

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章