合并两个排序的链表

来源:互联网 发布:java反射调用泛型方法 编辑:程序博客网 时间:2024/06/07 08:22

题目描述

输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
思路:递归实现

/*struct ListNode {int val;struct ListNode *next;ListNode(int x) :val(x), next(NULL) {}};*/class Solution {public:    ListNode* Merge(ListNode* pHead1, ListNode* pHead2)    {        ListNode *result = NULL;        if(pHead1 == NULL)  //当其中有一个链表为空时,直接返回另一个链表            return pHead2;        if(pHead2 == NULL)            return pHead1;        if(pHead1 == NULL && pHead2 == NULL) //当两个链表都为空时,返回NULL            return NULL;        if(pHead1->val <= pHead2->val){  //当pHead1的头结点元素小于pHead2的头结点元素,将1的头结点元素保存到结果中            result = pHead1;            result->next = Merge(pHead1->next, pHead2);//将1头结点下一个元素与2头结点元素比较,递归进行        }else{  当2的头结点值小于1头结点值,保存2的头结点值            result = pHead2;            result->next = Merge(pHead1, pHead2->next);  //递归        }        return result;    }};

思路2:非递归实现