数据结构顺序表的比较算法

将顺序表A和B中的元素逐个比较,若得到A中的某个元素大于B中的同位置元素,则A大于B,反之B大于A,若对比到最后都相等,则A等于B,此外若A中所有元素都等于B,但A元素多于B,则A大于B,反之B大于A。

参考如下:

#include <stdio.h>
struct StList 
{
    int data[100];
    int len;
};


int main()
{
    int i;
    struct StList a,b;
    a.len = 0;
    b.len = 0;
    printf("input length of list a:");
    scanf("%d",&a.len);
    printf("input data of list a:\n");
    for(i=0;i<a.len;i++)
        scanf("%d",&a.data[i]);

    printf("input length of list b:");
    scanf("%d",&b.len);
    printf("input data of list b:\n");
    for(i=0;i<b.len;i++)
        scanf("%d",&b.data[i]);

    //compare
    i = 0;
    while(1)
    {
        if(i < a.len && i<b.len)
        {
            if(a.data[i] > b.data[i])
            {
                printf("a>b\n");
                break;
            }else if(a.data[i]<b.data[i])
            {
                printf("a<b\n");
                break;
            }else
                i++;
        }else if ( i== a.len && i <b.len)
        {
            printf("a<b\n");
            break;
        }else if(i <a.len && i == b.len)
        {
            printf("a>b\n");
            break;
        }else
        {
            printf("a=b\n");
            break;
        }
    }
    return 0;
}

这和字符串比较是一个逻辑啊,用for循环对位比较就行

#include <stdio.h>

#define MAXSIZE 100
typedef struct _sqlist
{
    int data[MAXSIZE];
    int len;
}sqlist;
int main()
{
    sqlist A,B;
    //略去顺序表数据输入
    int i=0;
    while(i<A.len && i<B.len)
    {
        if(A.data[i] != B.data[i])
            break;
        i++;
    }
    if(i==A.len && i==B.len)
        printf("A等于B");
    else if(i==B.len)
        printf("A大于B");
    else if(i==A.len)
        printf("A小于B");
    else if(A.data[i]>B.data[i])
        printf("A大于B");
    else
        printf("A小于B");
    //
    return 0;
}