疑问:顺序表A和B,且都递增有序,试写一算法,从A中删除与B中相同的元素
书上的答案是:
void SubListvoid (SeqList *A,SeqList B){
int i,j,k;
k=1;
for(i=1;i<=B->length;i++){
for(j=k;j<=A->length;j++){
if(B.data(i)>=A.data(j)){
k=j;
break;
}else{
continue;
}
if(B.data[i]==A.data[j]){
deleteList(A,j);
}
}
}
}
我觉得这一段的逻辑不对,应该是:
if(B.data[i]==A.data[j]){
deleteList(A,j);
}
if(B.data(i)>A.data(j)){
k=j;
continue;
}else{
break;
}
请大家帮忙看看
比如:比如,A 中的数据是{1.3,4,5,6},B中的数据是{4,7},按照答案的逻辑,当B为4的时候,循环A开始比较,A取1,此时满足if(B.data(i)>=A.data(j)),结果就break终止了A的循环,然后再取B为7开始到A中比较。
这样子的话,不是就将B=4,A=4这个没有排除么?????