您的位置:首页 > 其它

Insertion Sort List

2015-07-07 23:40 429 查看
链表的插入排序算法,其中大循环是,从原始链表中挨个读取每个元素。

取出的每个元素用插入排序建立新表即可

/**
* 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 * temp=head;  //用于最外层循环的控制。表述的是当前节点
ListNode * tail;
ListNode * myhead=NULL;
if(head==NULL)
return NULL;
while(temp!=NULL)
{
tail=temp->next;
myhead=insertNode(myhead,temp);
temp=tail;
}
return myhead;
}
ListNode * insertNode(ListNode * head,ListNode * temp)
{
temp->next=NULL;
if(head==NULL)
return temp;
ListNode * t=head;
ListNode * pre=NULL;
while(t!=NULL)
{
if((temp->val)<(t->val))
{
if(pre!=NULL)
{
pre->next=temp;
}
temp->next=t;
break;
}
pre=t;
t=t->next;
if(pre->next==NULL)
pre->next=temp;

}
if(pre==NULL)
head=temp;
return head;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: