设
A
=
(
a
1
,
a
2
,
.
.
.
.
,
a
n
)
和
B
=
(
b
1
,
b
2
,
.
.
.
,
b
m
)
A=(a_1,a_2,....,a_n)和B=(b_1,b_2,...,b_m)
A=(a1,a2,....,an)和B=(b1,b2,...,bm)是两个线性表(假定所含数据元素均为整数)。若n
这里采用线性表的存储结构,所以需使用线性表的操作来做。
- 获取线性表的长度n,m
- n
- n>m 返回1
- n = m 在顺序比较A[i]和B[i],若A[i]B[i]返回1,A[i]=B[i]继续比较
int Compare(SeqList& A,SeqList& B) {
int n = Length(A);
int m = Length(B),i,la,lb;
if (n < m)
return -1;
else if(n > m) return 1;
else {
for(i = 0;i < n;i++) {
la = getValue(A,i);
lb = getValue(B,i);
if(la < lb)
return -1;
else if(la > lb)
return 1;
}
return 0;
}
}
完整源码
#include#include #define initSize 100 typedef int DataType; typedef struct{ DataType *data; int maxSize,n; }SeqList; void initList(SeqList& L) { //调用方式initList(L),输入:未初始化的顺序表L;输出;已初始化的顺序表L L.data = (DataType *) malloc(initSize*sizeof(DataType)); if(!L.data) { printf("分配有误....n"); exit(1); } L.maxSize = initSize; L.n = 0; } int Length(SeqList &L) { return L.n; } void createList(SeqList &L,DataType A[],int n) { initList(L); for(int i = 0;i 0 && i <= L.n) return L.data[i-1]; else return -1; } int Compare(SeqList& A,SeqList& B) { int n = Length(A); int m = Length(B),i,la,lb; if (n < m) return -1; else if(n > m) return 1; else { for(i = 0;i < n;i++) { la = getValue(A,i); lb = getValue(B,i); if(la < lb) return -1; else if(la > lb) return 1; } return 0; } } int main() { SeqList A,B; //模拟1的情况 int arr1[5] = {5,8,9,2,1}; createList(A,arr1,sizeof(arr1)/sizeof(int)); int arr2[5] = {5,3,2,1,98}; createList(B,arr2,sizeof(arr2)/sizeof(int)); printList(A); printList(B); int res = Compare(A,B); printf("Compared::%dn",res); //模拟0 int arr3[5] = {5,8,9,2,1}; createList(A,arr3,sizeof(arr3)/sizeof(int)); createList(B,arr3,sizeof(arr3)/sizeof(int)); res = Compare(A,B); printList(A); printList(B); printf("res:%dn",res); return 0; }



