cpp
#include<iostream>
#include<vector>
#include<map>
#include<unordered_map>
#include<stack>
#include<list>
using namespace std;
struct ListNode
{
int val;
ListNode *next;
ListNode() : val(0), next(nullptr) {}
ListNode(int x) : val(x), next(nullptr) {}
ListNode(int x, ListNode *next) : val(x), next(next) {}
};
class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2)
{
ListNode* pHead = new ListNode(-1);
ListNode* pre = pHead;
while ((l1 != nullptr) && (l2 != nullptr))
{
if (l1->val <= l2->val)
{
pre->next = l1;
l1 = l1->next;
}
else
{
pre->next = l2;
l2 = l2->next;
}
pre = pre->next;
}
pre->next = l1 == nullptr ? l2 : l1;
return pHead->next;
}
};
int main()
{
Solution a;
ListNode* list1 = new ListNode(1);
list1->next = new ListNode(2);
list1->next->next = new ListNode(4);
//list1->next->next->next = new ListNode(7);
ListNode* list2 = new ListNode(1);
list2->next = new ListNode(3);
list2->next->next = new ListNode(4);
//list2->next->next->next = new ListNode(6);
ListNode* pHead = a.mergeTwoLists(list1, list2);
while (pHead != nullptr)
{
cout << pHead->val << endl;
pHead = pHead->next;
}
return 0;
}