题目
分析
先找出A和B中前面对应位置相同的元素,用指针i和j分别指示A和B中不同的元素,根据指针i和j提供的元素信息即可得到A和B的比较结果。
代码
核心代码:
/* 比较A和B的大小 */
int compare(int A[],int An,int B[],int Bn) {
int i=0,j=0;
while(i<An&&j<Bn) {// 处理A和B顺序表中的公共部分
if(A[i]==B[j]) {
i++;
j++;
} else {
break;
}
}
if(i==An&&j==Bn) { // A=B
return 0;
}
if(i==An&&j!=Bn) { // A<B
return -1;
}
if(i<An&&j==Bn) { // A>B
return 1;
}
if(A[i]>B[j]) { // A>B
return 1;
} else { // A<B
return -1;
}
}
完整代码:
#include<stdio.h>
#define maxSize 30
/* 打印数组 */
void print(int nums[],int n) {
printf("\n");
for(int i=0; i<n; i++) {
printf("%d\t",nums[i]);
}
printf("\n");
}
/* 比较A和B的大小 */
int compare(int A[],int An,int B[],int Bn) {
int i=0,j=0;
while(i<An&&j<Bn) {// 处理A和B顺序表中的公共部分
if(A[i]==B[j]) {
i++;
j++;
} else {
break;
}
}
if(i==An&&j==Bn) { // A=B
return 0;
}
if(i==An&&j!=Bn) { // A<B
return -1;
}
if(i<An&&j==Bn) { // A>B
return 1;
}
if(A[i]>B[j]) { // A>B
return 1;
} else { // A<B
return -1;
}
}
int main() {
int A[maxSize]= {1,2,3,4,5,6,7};
int An=7;
int B[maxSize]= {1,2,3,4,6,7,8};
int Bn=7;
int i=compare(A,An,B,Bn);
printf("比较结果:%d",i);
return 0;
}
运行结果: