LeetCode147: Insertion Sort List


Sort a linked list using insertion sort.
この問題は簡単で、挿入ソート方法でチェーンテーブルをソートします.一時的なチェーンテーブルを構築し、ソートするチェーンテーブルの各ノードを一時的なチェーンテーブルに挿入できます.コードは次のとおりです.
/**
 * 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) {
			ListNode tmpNode = ListNode(INT_MIN);
			
			if (head == NULL || head->next==NULL){
				return head;
			}
			while(head){
				ListNode * pNode = head;
				head = head->next;
				ListNode *pPrev  = &tmpNode;
				ListNode *pNext = pPrev->next;
				while (pNext && pNext->val < pNode->val)
				{
					pPrev = pNext;
					pNext = pNext->next;
				}
				pPrev->next = pNode;
				pNode->next = pNext;
			}
			return tmpNode.next;
		}
};