Answer:
Explanation:
#include <iostream>
using namespace std;
int* append(int*,int,int*,int);
int* merge(int*,int,int*,int);
void print(int*,int);
int main()
{ int a[] = {11,33,55,77,99};
int b[] = {22,44,66,88};
print(a,5);
print(b,4);
int* c = append(a,5,b,4); // c points to the appended array=
print(c,9);
int* d = merge(a,5,b,4);
print(d,9);
}
void print(int* a, int n)
{ cout << "{" << a[0];
for (int i=1; i<n; i++)
cout << "," << a[i];
cout << "}\n";
}
int* append(int* a, int m, int* b, int n)
{
int * p= (int *)malloc(sizeof(int)*(m+n));
int i,index=0;
for(i=0;i<m;i++)
p[index++]=a[i];
for(i=0;i<n;i++)
p[index++]=b[i];
return p;
}
int* merge(int* a, int m, int* b, int n)
{
int i, j, k;
j = k = 0;
int *mergeRes = (int *)malloc(sizeof(int)*(m+n));
for (i = 0; i < m + n;) {
if (j < m && k < n) {
if (a[j] < b[k]) {
mergeRes[i] = a[j];
j++;
}
else {
mergeRes[i] = b[k];
k++;
}
i++;
}
// copying remaining elements from the b
else if (j == m) {
for (; i < m + n;) {
mergeRes[i] = b[k];
k++;
i++;
}
}
// copying remaining elements from the a
else {
for (; i < m + n;) {
mergeRes[i] = a[j];
j++;
i++;
}
}
}
return mergeRes;
}