您的位置:首页 > 其它

leetcode Merge Two Sorted Lists

2015-04-15 00:44 288 查看
代码:

#include<iostream>

using namespace std;

struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};

ListNode *mergeTwoLists(ListNode *l1, ListNode *l2) {
if (l1 == NULL)
return l2;
if (l2 == NULL)
return l1;
ListNode *p = l1, *q = l2;
ListNode *head;
if (l1->val < l2->val)
{
head = l1;
p = p->next;
}
else
{
head = l2;
q = q->next;
}
ListNode *m = head;
while (p != NULL&&q != NULL)
{
if (p->val < q->val)
{
m->next = p;
p = p->next;
m = m->next;
}
else
{
m->next = q;
q = q->next;
m = m->next;
}
}
if (p == NULL)
{
m->next = q;
}
else
{
m -> next = p;
}
return head;
}

int main()
{
ListNode *a1 = (ListNode *)malloc(sizeof(ListNode));
ListNode *a2 = (ListNode *)malloc(sizeof(ListNode));
ListNode *a3 = (ListNode *)malloc(sizeof(ListNode));
ListNode *a4 = (ListNode *)malloc(sizeof(ListNode));
ListNode *a5 = (ListNode *)malloc(sizeof(ListNode));
a1->val = 2;
a2->val = 3;
a3->val = 6;
a4->val = 9;
a1->next = NULL;
a2->next = a3;
a3->next = a4;
a4->next = NULL;
ListNode *b1 = (ListNode *)malloc(sizeof(ListNode));
ListNode *b2 = (ListNode *)malloc(sizeof(ListNode));
ListNode *b3 = (ListNode *)malloc(sizeof(ListNode));
ListNode *b4 = (ListNode *)malloc(sizeof(ListNode));
ListNode *b5 = NULL;
b1->val = 1;
b2->val = 62;
b3->val = 68;
b4->val = 90;
b1->next = NULL;
b2->next = b3;
b3->next = b4;
b4->next = NULL;
ListNode *m = mergeTwoLists(a1, b1);
for (; m != NULL; m = m->next)
cout << m->val << endl;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: