2022.08.05算法第4道合并两个排序的链表
这道理思路不难,就是需要依次比较两个链表中首节点的大小,主要在于怎么将新的链表构造出来。
首先需要两个指向当前节点的变量cur1和cur2,指向新链表前一个结点的pre,用于存储下一个节点。
ListNode* dummy=new ListNode(-1); ListNode* cur1=pHead1; ListNode* cur2=pHead2; ListNode* pre=dummy;之后判断两个当前节点的大小
将小的那个节点作为pre的next节点,这里最重要的就是pre的指向,以及各个变量的更新。
循环条件为两个链表有一个为空
if(cur1->val<=cur2->val) { pre->next=cur1; cur1=cur1->next; }else { pre->next=cur2; cur2=cur2->next; } pre=pre->next;同时,比较完毕之后,可能会有剩余节点存在,需要判断非空的那个链表,将剩余的节点添加到pre的next上。
if(cur1) pre->next=cur1; else pre->next=cur2;最终返回dummy->next头节点。