数组传入函数体变为形参退化为指针,所以在函数外求了数组的长度
#include<iostream>
#include<string>
using namespace std;
int* mergeTwoList(int *list1,int len1, int *list2,int len2)
{
if (list1 == NULL || list2 == NULL)
return NULL;
int *list3 = new int[len1 + len2 + 1];
int i, j, k; i = j = k = 0;
while (i < len1 && j < len2)
{
if (list1[i] < list2[j])
list3[k++] = list1[i++];
else
{
list3[k++] = list2[j++];
}
}
while (i<len1)
{
list3[k++] = list1[i++];
}
while (j<len2)
{
list3[k++] = list2[j++];
}
return list3;
}
测试
int main()
{
int array1[] = { 1, 2, 6,7, 9, 9, 12 ,19,};
int array2[] = { 1,2, 3, 4, 5, 6, 7, 8, 10 };
int lenA = sizeof(array1) / sizeof(int);
int lenB = sizeof(array2) / sizeof(int);
int *ret = mergeTwoList(array1, lenA, array2, lenB);
for (int i = 0; i < (lenA + lenB); i++)
cout << ret[i] << endl;
delete[] ret;
system("pause");
return 0;
}