LC 题目链接:https://leetcode-cn.com/problems/merge-two-sorted-lists/
题目思路 1:
链表本身有序,合并2个升序的链表为一个升序的链表;对于链表的操作,常有 能画出来就能做出来的说法。
L1: 1 -> 2 -> 3
L2 : 1 -> 3 -> 4
对于链表的操作,最后都要返回第一个节点,但是程序中往往对第一个节点都需要一些特殊的操作,比如插入第一个节点,这个时候需要判断第一个节点是否存在,不存在需要创建,这样会加大代码的复杂度。
所以,对于链表相关的操作,第一考虑 就是 头节点: ListNode * headNode = new ListNode(0); headNode->next = nullptr; ListNode* curNode = headNode;
当需要操作第一个节点时,对节点本身的操作结束之后, curNode->next = firstNode; curNode= curNode->next;
这样我们就可以对所有的节点都重复上面的操作。
这就是链表类题目的常用套路。
最终返回结果就是 headNode->next, so easy。
回到上面的排序题目,有了头节点之后,那么只需要不停的在两个链表间做判断即可。 直 至 某一个链表为空。
退出上面的循环后