使用c语言编写试编写出将两个顺序存储的有序表A和B合成一个有序表C的算法。 A 1 4 6 7 9 B 2 3 8 11 C 1 2 3 4 6 7 8 9 11
时间: 2024-03-18 15:40:42 浏览: 69
有两张单调递增有序的线性表A和B-采用顺序存储结构-将这两张表合并成C表-要求C表单调递减有序。Wo.pdf
好的,根据您的要求,我来为您提供C语言实现将两个有序表合并为一个有序表的算法。算法思路如下:
1. 定义三个指针,分别指向三个有序表的起始位置(A、B、C);
2. 比较A、B两个表中的元素,将小的元素放入C表中,并将指向该元素的指针向后移动一位,直到其中一个表的元素全部放入C表中;
3. 将剩余元素直接放入C表中。
下面是C语言代码实现:
```c
#include <stdio.h>
#define MAXSIZE 100
typedef struct{
int data[MAXSIZE];
int length;
}SqList;
void MergeList(SqList A, SqList B, SqList *C){
int i=0, j=0, k=0;
while(i<A.length && j<B.length){
if(A.data[i]<B.data[j])
C->data[k++] = A.data[i++];
else
C->data[k++] = B.data[j++];
}
while(i<A.length)
C->data[k++] = A.data[i++];
while(j<B.length)
C->data[k++] = B.data[j++];
C->length = k;
}
int main(){
SqList A = {{1,4,6,7,9}, 5};
SqList B = {{2,3,8,11}, 4};
SqList C;
MergeList(A, B, &C);
for(int i=0; i<C.length; i++)
printf("%d ", C.data[i]);
return 0;
}
```
输出结果为:1 2 3 4 6 7 8 9 11
阅读全文