//中位数
#include <iostream>
using namespace std;
# include <math.h>
#include <c++/vector>
struct ListNode {
int val; //当前结点的值
ListNode *next; //指向下一个结点的指针
ListNode(int x) : val(x), next(NULL) {} //初始化当前结点值为x,指针为空
};
int main(){
vector<int> nums1;
// nums1.push_back(2);
// nums1.push_back(2);
// nums1.push_back(0);
// nums1.push_back(2);
vector<int> nums2;
nums2.push_back(1);
// nums2.push_back(3);
// nums2.push_back(2);
// nums2.push_back(3);
int len1 = nums1.size();
int len2 = nums2.size();
struct ListNode* l_num = new ListNode(0);
ListNode* p = l_num;
int p1 = 0, p2 = 0;
bool full1 = false, full2 = false;
if(len1 == 0)
full1 = true;
if(len2 == 0)
full2 = true;
while(!full1 || !full2){
if(!full1 && (full2 || nums1[p1] <= nums2[p2])){
struct ListNode* new_p = new ListNode(nums1[p1]);
p->next = new_p;
p = new_p;
if(p1 == len1 - 1)
full1 = true;
else
p1 ++;
}else if(!full2 && (full1 || nums1[p1] > nums2[p2])){
struct ListNode* new_p = new ListNode(nums2[p2]);
p->next = new_p;
p = new_p;
if(p2 == len2 - 1)
full2 = true;
else
p2 ++;
} else if(full1){
struct ListNode* new_p = new ListNode(nums2[p2]);
p->next = new_p;
p = new_p;
if(p2 == len2 - 1)
full2 = true;
else
p2 ++;
} else if(full2){
struct ListNode* new_p = new ListNode(nums1[p1]);
p->next = new_p;
p = new_p;
if(p1 == len1 - 1)
full1 = true;
else
p1 ++;
}
}
p = l_num->next;
int len = len1 + len2;
int count = 0;
int num1, num2;
int num3;
if(len % 2 == 0){
while(p){
if(count == len / 2 - 1)
num1 = p->val;
if(count == len / 2)
num2 = p->val;
p = p->next;
count ++;
}
// cout << (num1 + num2) / 2.0;
return (num1 + num2) / 2.0;
} else{
while(p){
if(count == len / 2)
num3 = p->val;
p = p->next;
count ++;
}
// cout << num3 / 1.0;
return num3 / 1.0;
}
return 0;
}