两个顺序表合并算法的代码
时间: 2024-06-02 14:03:16 浏览: 10
以下是两个顺序表合并算法的代码:
方法一:
```
void MergeList(SqList La, SqList Lb, SqList &Lc) {
int i = 0, j = 0, k = 0;
while (i < La.length && j < Lb.length) {
if (La.data[i] <= Lb.data[j]) {
Lc.data[k] = La.data[i];
i++;
} else {
Lc.data[k] = Lb.data[j];
j++;
}
k++;
}
while (i < La.length) {
Lc.data[k] = La.data[i];
i++;
k++;
}
while (j < Lb.length) {
Lc.data[k] = Lb.data[j];
j++;
k++;
}
Lc.length = k;
}
```
方法二:
```
void MergeList(SqList La, SqList Lb, SqList &Lc) {
int i = 0, j = 0, k = 0;
while (i < La.length && j < Lb.length) {
if (La.data[i] < Lb.data[j]) {
Lc.data[k] = La.data[i];
i++;
} else {
Lc.data[k] = Lb.data[j];
j++;
}
k++;
}
while (i < La.length) {
Lc.data[k] = La.data[i];
i++;
k++;
}
while (j < Lb.length) {
Lc.data[k] = Lb.data[j];
j++;
k++;
}
Lc.length = k;
}
```
方法一和方法二的区别在于第一个while循环中的比较符号不同,一个是小于等于,一个是小于。这是因为在合并两个有序表时,如果两个表中有相同的元素,我们希望将它们按照原来的顺序放入新表中,所以需要使用小于等于符号。如果不考虑相同元素的顺序,可以使用小于符号。