数据结构实现将两个数组合并成一个数组

vs2013数据结构实现将两个数组合并成一个数组

#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
struct LinearList
{
	int * list;
	int size;
	int MaxSize;
};
int main()
{
	int list1[15] = { 2, 5, 7, 8, 10, 14, 19, 22, 25, 30 };
	int list2[15] = { 3, 5, 8, 9, 11, 18, 22, 28, 30, 32, 35 };
	int list3[30];
	struct LinearList L1 = { list1, 10, 15 };
	struct LinearList L2 = { list2, 11, 15 };
	struct LinearList L3 = { list3, 0, 30 };
	int i, j, k;
	for (i = j = k = 0; k<L3.MaxSize&&i<L1.size&&j<L2.size; k++)
	{
		if (L1.list[i]>L2.list[j])
			L3.list[k] = L2.list[j++];
		else if (L1.list[i] == L2.list[j])
		{
			L3.list[k] = L1.list[i++];
			j++;
		}
		else
			L3.list[k] = L1.list[i++];
	}
	while(k<L3.MaxSize&&i<L1.size)
	    L3.list[k++] = L1.list[i++];
	while(k<L3.MaxSize&&j<L2.size)
	    L3.list[k++] = L2.list[j++];
	L3.size = k;
	printf("合并后的数组长度是%d个,元素如下:\n", L3.size);
	for (k = 0; k<L3.size; k++)
		printf("%4d", L3.list[k]);
	printf("\n");
	system("pause");
	return 0;
}


猜你喜欢

转载自blog.csdn.net/strive_0902/article/details/79702196