C语言实现有序线性表合并去重
C语言实现有序线性表合并去重
解题思路: 由于两个线性表中的元素是有序排列的,在进行合并的时候,依次比较,哪个线性表的元素值小,就先将这个元素复制到新的线性表中。若两个元素相等,则复制一个即可,这样一直到其中的一个线性表结束,然后将剩余的线性表复制到新的线性表中。
代码示例:
#include <stdio.h>
void mergeLists(int list1[], int size1, int list2[], int size2, int mergedList[]) {
int i = 0, j = 0, k = 0;
while (i < size1 && j < size2) {
if (list1[i] < list2[j]) {
mergedList[k++] = list1[i++];
} else if (list1[i] > list2[j]) {
mergedList[k++] = list2[j++];
} else {
mergedList[k++] = list1[i++];
j++;
}
}
while (i < size1) {
mergedList[k++] = list1[i++];
}
while (j < size2) {
mergedList[k++] = list2[j++];
}
}
int main() {
int list1[] = {1, 3, 5, 7, 9};
int size1 = sizeof(list1) / sizeof(list1[0]);
int list2[] = {2, 4, 5, 6, 8};
int size2 = sizeof(list2) / sizeof(list2[0]);
int mergedSize = size1 + size2;
int mergedList[mergedSize];
mergeLists(list1, size1, list2, size2, mergedList);
printf('合并后的线性表:');
for (int i = 0; i < mergedSize; i++) {
printf('%d ', mergedList[i]);
}
printf('\n');
return 0;
}
代码说明:
mergeLists函数负责合并两个有序线性表,并确保相同元素只出现一次。- 在
main函数中,定义了两个有序线性表list1和list2,以及它们的长度size1和size2。 - 定义了一个足够大的线性表
mergedList用于保存合并结果。 - 调用
mergeLists函数将两个线性表合并,并将结果存储在mergedList中。 - 最后输出合并后的结果。
总结: 以上代码实现了两个有序线性表合并去重,代码简洁易懂,方便理解。在实际应用中,可以根据具体需求修改代码,例如使用其他数据类型或进行更多操作。
原文地址: https://www.cveoy.top/t/topic/phG 著作权归作者所有。请勿转载和采集!