[leetcode]单链表插入排序
2014-04-20 14:34
435 查看
给出一个单向链表,只有表头,使用插入排序的方法给他排序,被这道题磨了好久,不熟悉单链表以及指针,还是需要多多练习
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
ListNode *insertionSortList(ListNode *head)
{
if(head==NULL) return NULL;
ListNode *cntnode=NULL,*prenode=NULL,*nextnode=NULL,*node=NULL;
cntnode=head->next;
head->next=NULL;
while(cntnode)
{
node=cntnode->next;
if(cntnode->val<head->val)
{
cntnode->next=head;
head=cntnode;
}
else
{
prenode=head;
nextnode=head->next;
while(nextnode&&(nextnode->val)<cntnode->val)
{
prenode=pre->next;
nextnode=nextnode->next;
}
prenode->next=cntnode;
cntnode->next=nextnode;
}
cntnode=node;
}
return head;
}
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
ListNode *insertionSortList(ListNode *head)
{
if(head==NULL) return NULL;
ListNode *cntnode=NULL,*prenode=NULL,*nextnode=NULL,*node=NULL;
cntnode=head->next;
head->next=NULL;
while(cntnode)
{
node=cntnode->next;
if(cntnode->val<head->val)
{
cntnode->next=head;
head=cntnode;
}
else
{
prenode=head;
nextnode=head->next;
while(nextnode&&(nextnode->val)<cntnode->val)
{
prenode=pre->next;
nextnode=nextnode->next;
}
prenode->next=cntnode;
cntnode->next=nextnode;
}
cntnode=node;
}
return head;
}
相关文章推荐
- LeetCode-Insertion Sort List-链表插入排序-链表操作
- [LeetCode]147 链表插入排序
- LeetCode Insertion Sort List 链表插入排序
- 每天一道LeetCode-----链表插入排序
- [LeetCode]85. Insertion Sort List链表插入排序
- LeetCode-147. Insertion Sort List (JAVA)链表插入排序
- leetcode 147. Insertion Sort List-链表插入排序
- [LeetCode] Insertion Sort List 链表插入排序
- leetcode之链表类之链表排序-----147/148. 链表快速排序 链表插入排序
- [LeetCode] Insertion Sort List 单向链表插入排序
- LeetCode 147. Insertion Sort List插入排序链表的高效简单解法
- LeetCode-Sort List,链表排序(插入和归并),时间复杂度O(n^2) and O(nlgn)
- 使用插入算法排序链表,leetcode
- [Leetcode] insertion sort list 链表插入排序
- 链表插入排序 lintcode
- 链表操作:创建,插入,排序,反转
- java 链表形式线性表插入排序
- Coding interview : 链表排序(选择,插入,快排,归并)
- 链表实现归并(快速、插入)排序
- LeetCode-Merge k Sorted Lists-合并k个排序链表-自底向上归并排序+链表操作