C语言将两个递增的有序顺序表合并为一个递增的有序顺序表
时间: 2023-05-24 11:01:11 浏览: 139
可以使用归并排序的思想来将两个有序顺序表合并。具体的实现可以先创建一个新的顺序表,然后同时遍历两个原有序表,比较两个表中元素大小,将较小的元素插入到新表中,直到其中一个表已经完成遍历,再将剩下的元素全部插入到新表中。这样,就可以得到一个递增有序的新表。
以下是C语言的程序示例:
```
#include <stdio.h>
#define MAXSIZE 100
typedef struct {
int r[MAXSIZE+1];
int length;
}SqList;
void Merge(SqList *L1, SqList *L2, SqList *L3)
{
int i = 1, j = 1, k = 0;
while (i <= L1->length && j <= L2->length) {
if (L1->r[i] <= L2->r[j])
L3->r[++k] = L1->r[i++];
else
L3->r[++k] = L2->r[j++];
}
while (i <= L1->length)
L3->r[++k] = L1->r[i++];
while (j <= L2->length)
L3->r[++k] = L2->r[j++];
L3->length = k;
}
int main()
{
SqList L1 = {{0, 1, 3, 9, 11}, 4};
SqList L2 = {{0, 2, 4, 6, 8, 10}, 5};
SqList L3 = {{0}, 0};
Merge(&L1, &L2, &L3);
for (int i = 1; i <= L3.length; ++i)
printf("%d ", L3.r[i]);
printf("\n");
return 0;
}
```
输出结果为:1 2 3 4 6 8 9 10 11
阅读全文