使用VC++将两个递增的有序顺序表合并为一个递增的有序顺序表。
时间: 2023-05-24 18:01:15 浏览: 99
可以使用双指针的方式,分别指向两个顺序表的开头,比较指针所指的元素大小,将较小的元素加入新的顺序表,并将指针向后移动。直到其中一个顺序表已经全部加入新的顺序表,然后将另一个顺序表剩余的元素依次加入新的顺序表即可。具体实现可以参考以下代码:
```
void merge(int a[], int m, int b[], int n, int c[])
{
int i, j, k;
i = j = k = 0;
while (i < m && j < n) {
if (a[i] < b[j]) {
c[k++] = a[i++];
} else {
c[k++] = b[j++];
}
}
while (i < m) {
c[k++] = a[i++];
}
while (j < n) {
c[k++] = b[j++];
}
}
```
其中,a[]和b[]分别表示两个递增的有序顺序表,m和n分别表示它们的长度,c[]存放合并后的有序顺序表。函数调用示例:
```
int a[] = {1, 3, 5, 7, 9};
int b[] = {2, 4, 6, 8, 10};
int c[10] = {0};
merge(a, 5, b, 5, c);
for (int i = 0; i < 10; i++) {
printf("%d ", c[i]);
}
```
输出结果为:1 2 3 4 5 6 7 8 9 10
阅读全文