栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言两个顺序表元素比较含测试源码

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言两个顺序表元素比较含测试源码

题目再现

设 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​)是两个线性表(假定所含数据元素均为整数)。若nm,则称A>B;当n=m时,若 a i = b i ( i = 1 , 2 , . . . , n ) a_i=b_i(i=1,2,...,n) ai​=bi​(i=1,2,...,n),则称A=B;若 a i = b i ( i = 1 , 2 , . . . j ) 且 a j + 1 < b j + 1 ( j < n 且 j < m ) a_i=b_i(i=1,2,...j)且a_{j+1}B.设计一个比较线性表A和B的算法,当AB时分别输出-1、0或1.

输入输出及测试效果

解题思路

这里采用线性表的存储结构,所以需使用线性表的操作来做。

  • 获取线性表的长度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;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/296731.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号