合并有序链表

思路:首先检测两个链表是否为空,如果为空直接返回另一个链表即可。
接着创建一个空节点,在将这个空结点赋值给一个临时结点。
第一步,循环检测两个链表都不为空的情况,直到其中一个链表为空结束循环
第二步,判断链表1的值是否大于等于链表2的值,如果等式成立,则临时结点指向链表2,并更新链表2的指针。
否则,临时结点指向链表1,并更新链表1的结点。然后更新临时结点的指针,使其指向下一位。依此循环,直到其中一个链表指针指向为空。
第三步,循环外判断链表是否为空,如为空则临时结点指向另一个不为空的结点。
最后返回虚拟头结点的下一位结点。
ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) { if(list1==NULL) { return list2; } if(list2==NULL) { return list1; } ListNode* node=new ListNode(0); ListNode* tmp=node; while(list1!=NULL && list2!=NULL) { if(list1->val >= list2->val) { tmp->next=list2; list2=list2->next; } else { tmp->next=list1; list1=list1->next; } tmp=tmp->next; }
if(list1==NULL) { tmp->next=list2; }else{ tmp->next=list1; } return node->next; }

浙公网安备 33010602011771号