剑指offer(十六):合并两个排序的链表
Posted 曹婷婷的博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer(十六):合并两个排序的链表相关的知识,希望对你有一定的参考价值。
题目描述
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
C++非递归实现:
class Solution { public: ListNode* Merge(ListNode* pHead1, ListNode* pHead2) {
if(!pHead1)
return pHead2;
if(!pHead2)
return pHead1;
ListNode* pHead3 = new ListNode(0); ListNode * p1 = pHead1; ListNode * p2 = pHead2; ListNode * p3 = pHead3; while(p1&&p2){ if(p1->val <= p2->val){ p3->next = p1; p1 = p1->next; p3 = p3->next; } else{ p3->next = p2; p2 = p2->next; p3 = p3->next; } } if(p1) p3->next = p1; if(p2) p3->next = p2; return pHead3->next; } };
结果:
Python递归实现:
# -*- coding:utf-8 -*- # class ListNode: # def __init__(self, x): # self.val = x # self.next = None class Solution: # 返回合并后列表 def Merge(self, pHead1, pHead2): # write code here if pHead1 == None: return pHead2 if pHead2 == None: return pHead1 if pHead1.val <= pHead2.val: res = pHead1; res.next = self.Merge( pHead1.next, pHead2) else: res = pHead2; res.next = self.Merge( pHead1, pHead2.next) return res;
以上是关于剑指offer(十六):合并两个排序的链表的主要内容,如果未能解决你的问题,请参考以下文章