对两个顺序表进行合并。
思想:定义两个变量(i,j)分别指向顺序表 A和B当前处理的元素,若i元素不大于j元素(<=),则把i元素复制到新表中,否者将j元素复制到新表中。
View Code
1 #include <iostream>
2 #include <stdio.h>
3
4 using namespace std;
5
6 int main()
7 {
8 //定义数组
9 char arr_A[] = {'a','b','g','h','i','j','n','o','p','q','u','x','y','z'};
10
11 char arr_B[] = {'c','d','e','f','k','l','m','r','s','t','v','w'};
12
13 char arr_New[26];//这里只操作26个不重复的字母,所以写死
14
15 //定义两个变量分别指向数组 A和B当前处理的元素,若i元素不大于j元素(<=),则把i元素复制到新的arr_New数组中
16 int i=0;
17 int j=0;
18 int n=0;
19
20
21 //获取数组长度
22 int lenA = sizeof(arr_A); //14
23 int lenB = sizeof(arr_B); //12
24
25 cout<<"顺序表A:"<<endl;
26 for (int indexA =0; indexA < lenA; indexA++)
27 {
28 cout<< arr_A[indexA]<<" ";
29 }
30 cout<<endl;
31
32 cout<<"顺序表B:"<<endl;
33 for (int indexB =0; indexB < lenB; indexB++)
34 {
35 cout<< arr_B[indexB]<<" ";
36 }
37 cout<<endl;
38
39 //重要操作:循环比较操作,将合并后的元素放到新数组中
40 while (i < lenA && j < lenB)
41 {
42
43 if (arr_A[i] <= arr_B[j])
44 {
45 arr_New[n] = arr_A[i];
46 i++;
47 n++;
48 }
49 else
50 {
51 arr_New[n] = arr_B[j];
52 j++;
53 n++;
54 }
55 }
56
57 //如果 A 、B还有剩余元素,则继续插入到新数组中
58 while(i <= lenA){
59 arr_New[n] = arr_A[i];
60 i++;
61 n++;
62 }
63
64 while(j <= lenB){
65 arr_New[n] = arr_B[j];
66 j++;
67 n++;
68 }
69
70
71 int lenNew = sizeof(arr_New);
72 cout << "合并后的新表: "<< endl;
73
74 for(int index = 0; index < lenNew; index++)
75 {
76 cout << arr_New[index] << " ";
77 }
78 cout << endl;
79
80 getchar();
81 }
执行结果: