/**
206:Reverse linked list
*/
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
ListNode* reverseList(ListNode* head) {
if(!head||!head->next)
return head;
ListNode * p = head;
ListNode * next =NULL;
ListNode * pre = NULL;
while(p!=NULL){
next = p->next;
p->next = pre;
pre = p;
p=next;
}
return pre;
}
/**
LeetCode 148: SortList
*/
ListNode * mergeList(ListNode * h1,ListNode*h2){
ListNode * head;
ListNode * p = head;
while(h1!=NULL&&h2!=NULL){
if(h1->val<h2->val){
p->next = h1;
h1=h1->next;
}
else{
p->next = h2;
h2 = h2->next;
}
p=p->next;
}
if(h1!=NULL)
p->next = h1;
if(h2!=NULL)
p->next = h2;
return head->next;
}
ListNode* sortList(ListNode* head) {
if(head==NULL||head->next==NULL)
return head;
ListNode * h2 = head->next->next;
ListNode * h1 = head;
while(h2!=NULL&&h2->next!=NULL){
h1=h1->next;
h2 = h2->next->next;
}
ListNode * head2 = sortList(h1->next);
h1->next = NULL;
return mergeList(sortList(head),head2);
}
LeetCode 148: SortList, 206:Reverse linked list
最新推荐文章于 2025-06-19 14:02:55 发布