c语言实现合并顺序表
时间: 2023-12-24 16:03:32 浏览: 204
以下是C语言实现合并顺序表的代码和注释说明:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX_SIZE 10 // 定义顺序表的最大长度
// 定义顺序表结构体
typedef struct {
int data[MAX_SIZE]; // 存储数据的数组
int length; // 当前长度
} SqList;
// 初始化顺序表
void InitList(SqList *L) {
L->length = 0;
}
// 随机生成顺序表
void GenerateList(SqList *L) {
srand((unsigned int)time(NULL)); // 设置随机数种子
for (int i = 0; i < MAX_SIZE; i++) {
L->data[i] = rand() % 100; // 生成0-99之间的随机数
}
L->length = MAX_SIZE;
}
// 输出顺序表
void PrintList(SqList L) {
for (int i = 0; i < L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
}
// 合并两个有序顺序表
void MergeList(SqList La, SqList Lb, SqList *Lc) {
int i = 0, j = 0, k = 0; // i、j分别为La、Lb的下标,k为Lc的下标
while (i < La.length && j < Lb.length) { // 只要La和Lb都有元素
if (La.data[i] <= Lb.data[j]) { // 如果La的元素小于等于Lb的元素
Lc->data[k++] = La.data[i++]; // 将La的元素放入Lc中
} else { // 如果La的元素大于Lb的元素
Lc->data[k++] = Lb.data[j++]; // 将Lb的元素放入Lc中
}
}
while (i < La.length) { // 如果La还有元素
Lc->data[k++] = La.data[i++]; // 将La的元素放入Lc中
}
while (j < Lb.length) { // 如果Lb还有元素
Lc->data[k++] = Lb.data[j++]; // 将Lb的元素放入Lc中
}
Lc->length = k; // 更新Lc的长度
}
int main() {
SqList La, Lb, Lc;
InitList(&La); // 初始化La
InitList(&Lb); // 初始化Lb
InitList(&Lc); // 初始化Lc
GenerateList(&La); // 随机生成La
GenerateList(&Lb); // 随机生成Lb
printf("La: ");
PrintList(La); // 输出La
printf("Lb: ");
PrintList(Lb); // 输出Lb
MergeList(La, Lb, &Lc); // 合并La和Lb
printf("Lc: ");
PrintList(Lc); // 输出Lc
return 0;
}
```
阅读全文