题解 | #合并两个排序的链表#
合并两个排序的链表
http://www.nowcoder.com/practice/d8b6b4358f774294a89de2a6ac4d9337
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*
* C语言声明定义全局变量请加上static,防止重复定义
*/
/**
*
* @param pHead1 ListNode类
* @param pHead2 ListNode类
* @return ListNode类
*/
struct ListNode* Merge(struct ListNode* pHead1, struct ListNode* pHead2 ) {
//改变原两个链表的指针指向排成新链表 节省空间
struct ListNode* H=malloc(sizeof(struct ListNode));
struct ListNode* cur=H;
while(pHead1!=NULL&&pHead2!=NULL)
{
if(pHead1->val<=pHead2->val)
{
cur->next=pHead1;
cur=cur->next;
pHead1=pHead1->next;
}
else
{
cur->next=pHead2;
cur=cur->next;
pHead2=pHead2->next;
}
}
//若是有一边链表未遍历完,可直接指向当前节点,原链表已排好序
if(pHead1!=NULL)
{
cur->next=pHead1;
}
if(pHead2!=NULL)
{
cur->next=pHead2;
}
return H->next;
// write code here
}