您的位置:首页 > 其它

leetcode之Insertion Sort List

2014-05-08 19:58 316 查看
原题如下:

Sort a linked list using insertion sort.

题目要求按照插入排序的方法对链表进行排序,但由于单项链表只能从前往后遍历,所以链表中的插入排序也只能从前往后查找合适的插入位置。为了插入的方便可以新创建一个头结点tHead,指针p和q用来查找插入位置的前后两个节点,指针cur和postCur用来指向当前要插入的节点和要插入节点的下一个节点。

class Solution {
public:
ListNode *insertionSortList(ListNode *head) {
if(head == NULL || head->next == NULL)
return head;
ListNode *p,*q,*cur,*postCur;
ListNode *tHead = new ListNode(0);
tHead->next = head;
cur = head->next;
head->next = NULL;
while (cur != NULL)
{
postCur = cur->next;
p = tHead;
q = tHead->next;
while( q != NULL && cur->val > q->val){
q = q->next;
p = p->next;
}
p->next = cur;
cur->next = q;
cur = postCur;
}
head =  tHead->next;
delete tHead;
return head;
}
};
链表的排序和插入等一般不是太难,关键是要认真和细心,另外,越来越发现链表带头结点的好处了。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: