0%

数据结构算法每日一练(五)顺序表合并

数据结构算法每日一练(五)顺序表合并

题目:将两个有序顺序表合并为一个新的有序顺序表,并由函数返回结果顺序表

算法思想:按顺序不断取下两个顺序表表头的较小结点入新的顺序表,直到一个表为空,将另一个表剩下的部分加到新的顺序表后。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
bool Merge(SqList A, SqList B, SqList &C) {
if (A.len + B.len > C.MaxSize) { //若大于顺序表的最大长度,则返回false,空间不够
return false;
}
int i = 0, j = 0, k = 0; //定义变量
while (i < A.len && j < B.len) { //循环两个有序表,两两比较,较小的存入结果表
if (A.data[i] < B.data[j]) {
C.data[k++] = A.data[i++];
} else
C.data[k++] = B.data[j++];
}
while (i < A.len) { //A还没比较完,将A剩下加入结果表
C.data[k++] = A.data[i++];
}
while (j < B.len) { //B还没比较完,将B剩下加入结果表
C.data[k++] = B.data[j++];
}
C.len = k; //结果表的长度
return true;
}
北以晨光 wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!
------ 本文结束感谢您的阅读 ------