◆2.12③ 设A=(a1,…,am)和B=(b1,…,bn)均为有序顺序表,
A'和B'分别为A和B中除去最大共同前缀后的子表(例如,
A=(x,y,y,z,x,z),B=(x,y,y,z,y,x,x,z),则两者中最大
的共同前缀为(x,y,y,z), 在两表中除去最大共同前缀后
的子表分别为A'=(x,z)和B'=(y,x,x,z))。若A'=B'=空表,
则A=B;若A'=空表,而B'≠ 空表,或者两者均不为空表,
且A'的首元小于B'的首元,则AB。试写一个比
较A和B大小的算法。(注意:在算法中,不要破坏原表A
和B,也不一定先求得A'和B'才进行比较)。
要求实现下列函数:
char Compare(SqList A, SqList B);
/* 比较顺序表A和B, */
/* 返回' /* '=', 若A=B; */
/* '>', 若A>B */
顺序表类型定义如下:
typedef struct {
ElemType *elem;
int length;
int listsize;
} SqList;
char Compare(SqList A, SqList B)
// 比较顺序表A和B,
// 返回' // '=', 若A=B;
// '>', 若A>B
{
int i;
for(i=0;A.elem[i]||B.elem[i];i++)
if(A.elem[i]!=B.elem[i])
{if(A.elem[i]-B.elem[i]>0) return '>';
else return ' return '=';
}