比较两个顺序表的大小

#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");
    }
}

猜你喜欢

转载自blog.csdn.net/linking_lin/article/details/82534702