实验一   合并顺序表

#include
#include "stdlib.h"
#include
#define ok 1
#define error 0
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
#define elemtype int

typedef struct
{
    int *elem;
    int length;

}SqList;

int InitList_sq(SqList &A,int n)    //给出一个参数 说出创建多少个元素
{
    A.elem=(elemtype *)malloc(n*sizeof(elemtype));
    if(!A.elem)
        return error;
    A.length=n;
    return ok;
}

int Load_Sq(SqList &L)
{ //遍历顺序表
    int i;
    if(L.length == 0)
        printf("The List is empty!");
    else
    {
        for(i=0;i
            printf("%d ",L.elem[i]);

    }
    printf("\n");
    return ok;
}

SqList MergeList_Sq(SqList &A,SqList &B, SqList &C)
{ //合并
    int *pa=A.elem;
    int *pb=B.elem;
    C.length=A.length+B.length;
    int *pc =C.elem=(elemtype*)malloc(C.length*sizeof(elemtype));
    if(!C.elem)
        exit(1);
    int *pa_last=A.elem+A.length;
    int *pb_last=B.elem+B.length;
    while((pa
    {
        if(*pa<=*pb)
            *pc++=*pa++;
        else
            *pc++=*pb++;
    }
    while(pa
        *pc++ =*pa++;
    while(pb
        *pc++=*pb++;
    return C;
}

int main()
{
    SqList A,B,C; //一起定义 如下面定义abc一样
    int i,na,nb;

 


    scanf("%d",&na);
    InitList_sq(A, na);

    for(i=0;i
    {
        scanf("%d",&A.elem[i]);
    }
    scanf("%d",&nb);
    InitList_sq(B, nb);

    for(i=0;i
    {
        scanf("%d",&B.elem[i]);
    }

    printf("List A:");
    Load_Sq(A);
    printf("List B:");
    Load_Sq(B);

    MergeList_Sq(A,B,C);

    printf("List C:");
    Load_Sq(C);
    return 0;
}

你可能感兴趣的:(实验一   合并顺序表)