求教2个有序链表合并的时间空间复杂度。该如何解决

求教2个有序链表合并的时间空间复杂度。
求教大家一个问题,这个函数的时间复杂度和空间复杂度是多少啊,我觉得是O(n)或者O(m),取其中小的,但是同学说不对,说是O(m+n),求各位大神指点下,能说的详细点就更好了。

/** 
 * @brief     合并两个有序链表
 * @param[in] head1_ptr:第一个链表的首指针
 * @param[in] head2_ptr:第二个链表的首指针
 * @retval    反转后链表的首指针
 * @see       Node
 * @note      当输入两个参数为同一个指针的时候,第一个节点指向自己构成循环链表
 */
Node_ptr ListMerge(Node_ptr head1_ptr, Node_ptr head2_ptr)
{
Node_ptr head1 = head1_ptr;
Node_ptr head2 = head2_ptr;
Node_ptr ptr,head;

if(head1->data < head2->data)
{
ptr = head1;
head1 = head1->next;
}
else
{
ptr = head2;
head2 = head2->next;
}
head = ptr;

while(NULL != head1 && NULL != head2)
{
if(head1->data < head2->data)
{
ptr->next = head1;
ptr = ptr->next;
head1 = head1->next;
}
else
{
ptr->next = head2;
ptr = ptr->next;
head2 = head2->next;
}
}
printf("he");
if(!head1)
{
ptr->next = head2;
}
else if(!head2)
{
ptr->next = head1;
}
return head;
}

------解决方案--------------------
最好的情况是O(m、n中的最小值)
最坏的情况是O(m+n)
------解决方案--------------------
空间复杂度是O(1),这个应该没问题。