您的位置:首页 > 其它

合并两个有序的链表新的链表也要有序

2018-03-01 15:02 330 查看
题目:
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。

解法:
两个指针指向两个链表,依次判断,谁小就接谁,谁也就获得前进(竞争前进)

代码如下:struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};

ListNode* Merge(ListNode* pHead1, ListNode* pHead2)
{
if (pHead1 == NULL&&pHead2 == NULL)
return NULL;
ListNode* p1 = pHead1, *p2 = pHead2, newHead(0);
ListNode* pNew = &newHead;
while (p1&&p2)
{
if (p1->val>p2->val)//判断两个链表要接哪一个
{
pNew->next = p2;
p2 = p2->next;
}
else
{
pNew->next = p1;
p1 = p1->next;
}
pNew = pNew->next;//尾插法,最后记得NULL
pNew->next = NULL;
}
if (p1)//接上两个链表剩下部分
{
pNew->next = p1;
}
if (p2)
{
pNew->next = p2;
}
pNew = &newHead;//重新指向头节点
return pNew->next;//去掉头节点后面的就是两个链表合并的
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: