顺序表归并

本文介绍了如何将两个顺序表合并成一个新表,并通过代码实现。重点在于使用双指针策略,比较并复制元素。

对两个顺序表进行合并。

思想:定义两个变量(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 }

执行结果:

转载于:https://www.cnblogs.com/mangonic/archive/2012/04/03/2431251.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值