[剑指offer]面试题17:合并两个排序的链表
生活随笔
收集整理的这篇文章主要介绍了
[剑指offer]面试题17:合并两个排序的链表
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
面试题17:合并两个排序的链表
题目:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。例如输入图3.7中的链表1和链表2,则合并之后的升序链表如链表3所示。链表结点定义如下:
代码如下:
ListNode *Merge(ListNode *pHead1, ListNode *pHead2) {if (pHead1 == nullptr) return pHead2;else if (pHead2 == nullptr) return pHead1;ListNode *pMergedHead = nullptr;if (pHead1->value < pHead2->value){pMergedHead = pHead1;pMergedHead->next = Merge(pHead1->next, pHead2);}else{pMergedHead = pHead2;pMergedHead->next = Merge(pHead1, pHead2->next);}return pMergedHead; }测试用例:
● 功能测试(输入的两个链表有多个结点,结点的值互不相同或者存在值相等的多个结点)。
● 特殊输入测试(两个链表的一个或者两个头结点为 NULL 指针、两个链表中只有一个结点)。
本题考点:
● 考查应聘者分析问题的能力。解决这个问题需要大量的指针操作,应聘者如果没有透彻地分析问题形成清晰的思路,那么他很难写出正确的代码。
● 考查应聘者能不能写出鲁棒的代码。由于有大量指针操作,应聘者如果稍有不慎就会在代码中遗留很多与鲁棒性相关的隐患。建议应聘者在写代码之前全面分析哪些情况会引入空指针,并考虑清楚怎么处理这些空指针。
总结
以上是生活随笔为你收集整理的[剑指offer]面试题17:合并两个排序的链表的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: [剑指offer]面试题16:反转链表
- 下一篇: [剑指offer]面试题18:树的子结构