#include <stdio.h>
/*
题目:数据结构题集17页2.12
设 A=(a1,a2,......,am),B=(b1,b2,......,bm)均为顺序表,
A'和B'分别是A和B中除去最大共同前缀后的子表,
若 A'=B'=空表,则A=B;
若 A'=空表,B'!=空表
或者
A'!=空表,B'!=空表,并且A'的首元小于B'的首元,则A<B;
否则,A>B
试写一个比较A,B大小的算法
说明:
1. A=(a,b,c,d,e)
B=(a,b,f)
=>A和B的最大公共前缀是(a,b)
2. 在算法中,不要破坏原表A和B,并且,也不一定先求得A',B'才进行比较
*/
#define maxlen 50
#define DATATYPE char
typedef struct{
DATATYPE arr[maxlen];
int length;
}Seqlist;
int main(void)
{
Seqlist la = {{'a','b','c','d','e'},5};
Seqlist lb = {{'a','b','f'},3};
//确定公共前缀的长度
int i;
for(i=0;i<la.length && i<lb.length && la.arr[i]==lb.arr[i];i++){}
printf("common prefix length = %d\n",i);
if(i == la.length && i == lb.length){
printf("la = lb\n");
}else if(i == la.length && i < lb.length){
printf("la < lb\n");
}else if(i < la.length && i < lb.length && la.arr[i] < lb.arr[i]){
printf("la < lb\n");
}else{
printf("la < lb\n");
}
}