数据结构 将两个有序顺序表合成一个有序顺序表

题目:

     有顺序表A和B,其元素均按从小到大的升序排列,编写一个算法,将它们合并成一个顺序表C,要求C的元素也按从小到大的升序排列

代码:

#include<stdio.h>
#define MAX 100
typedef int datatype;
typedef struct
{
    datatype a[MAX];
    int size;
}sequence_list;
void init(sequence_list *L)
{
    L->size=0;
}
void function(sequence_list *L,sequence_list *R)
{
    int i,j,k;
    for(i=0;i<R->size;i++)
    {
        for(j=L->size-1;j>=0;j--)
        {
            if(R->a[i]<L->a[j])
            {
                L->a[j+1]=L->a[j];
                if(j==0)
                    L->a[0]=R->a[i];
            }
            else if(R->a[i]>=L->a[j])
            {
                L->a[j+1]=R->a[i];
                break;
            }

        }
        L->size++;
    }
}
int main()
{
    sequence_list L,R;
    datatype a;
    int i;
    init(&L);
    init(&R);
    printf("请从小到大输入第一个顺序表,以0结尾:");
    scanf("%d",&a);
    while(a)
    {
        L.a[L.size]=a;
        L.size++;
        scanf("%d",&a);
    }
    printf("\n请从小到大输入第二个顺序表,以0结尾:");
    scanf("%d",&a);
    while(a)
    {
        R.a[R.size]=a;
        R.size++;
        scanf("%d",&a);
    }
    function(&L,&R);
    printf("\n合成过后的顺序表是:");
    for(i=0;i<L.size;i++)
        printf("%d ",L.a[i]);
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_40452317/article/details/82708109