输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
思路:
1.遍历,递归判断;
2.计算链表长度,循环判断;
#include <iostream>
#include<vector>
using namespace std;
/* 创建一个单链表 */
struct ListNode{
int val;
ListNode* next;
ListNode(int x) :
val(x), next(NULL) {}
};
ListNode* meg(ListNode* L1,ListNode* L2){
ListNode* p1, *p2;
ListNode* p3 = NULL;
p1 = L1;
p2 = L2;
if (p1 == NULL)
{
return p2;
}
else if (p2 ==NULL)
{
return p1;
}
if (p1->val < p2->val)
{
p3 = p1;
p3->next = meg(p1->next,p2);//对每个链表值进行判断
}
else
{
p3 = p2;
p3->next = meg(p1,p2->next);
}
return p3;
}
int main(){
ListNode* head = NULL;
head = new ListNode(10);
ListNode* h1 = new ListNode(20);
ListNode *h2 = new ListNode(30);
ListNode *h3 = new ListNode(40);
head->next = h1;
h1->next = h2;
h2->next = h3;
ListNode *thead = new ListNode(9);
ListNode *t2 = new ListNode(20);
ListNode *t3 = new ListNode(31);
ListNode *t4 = new ListNode(39);
thead->next = t2;
t2->next = t3;
t3->next = t4;
ListNode* result = meg(head, thead);
cout << "结果:";
for (int i = 0; i < 8; i++)
{
cout <<result->val <<" ";
result = result->next;
}
//计算链表长度,利用循环
return 0;
}