构建算法完成合并两个线性表并去除表中重复元素的运算,若 LA={‘a’,’b’,’c’,’d’,’e’},LB={‘b’,’d’,’f’,’g’},那LC表的结果为什么?请通过CC++程序验证。
时间: 2023-11-13 17:03:10 浏览: 80
LC表的结果为{'a','b','c','d','e','f','g'},其中去除了表中重复元素'b'和'd'。
以下是CC程序验证结果:
#include<iostream>
#include<cstring>
using namespace std;
#define MAXSIZE 100
typedef struct{
char data[MAXSIZE];
int length;
}SqList;
void InitList(SqList &L){
memset(L.data,0,sizeof(L.data));
L.length = 0;
}
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++];
else if(La.data[i] > Lb.data[j])
Lc.data[k++] = Lb.data[j++];
else{
Lc.data[k++] = La.data[i++];
j++;
}
}
while(i < La.length) Lc.data[k++] = La.data[i++];
while(j < Lb.length) Lc.data[k++] = Lb.data[j++];
Lc.length = k;
}
void PrintList(SqList L){
for(int i=0; i<L.length; i++)
cout << L.data[i] << " ";
cout << endl;
}
int main ()
{
SqList LA, LB, LC;
InitList(LA);
InitList(LB);
InitList(LC);
LA.data[0] = 'a'; LA.data[1] = 'b'; LA.data[2] = 'c'; LA.data[3] = 'd'; LA.data[4] = 'e';
LA.length = 5;
LB.data[0] = 'b'; LB.data[1] = 'd'; LB.data[2] = 'f'; LB.data[3] = 'g';
LB.length = 4;
MergeList(LA, LB, LC);
PrintList(LC);
return 0;
}
阅读全文