【数据结构】顺序表的应用(2)(C语言)

问题:

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

头文件与该头文件一样:【数据结构】顺序表的实现(C语言)

#include "stdio.h"
#include "sequlist.h"
int main ()
{
    int length,i,j,input_number,a;
    sequence_list slt1,slt2,slt3;
    while(1)
    {
        init(&slt1);
        init(&slt2);
        init(&slt3);
        printf("请输入想要创建的第一个顺序表的长度:");
        scanf("%d",&length);
        printf("输入%d个数字:\n",length);
        for (i=1;i<=length;i++)
        {
            scanf("%d",&input_number);
            append(&slt1,input_number);
        }
        printf("请输入想要创建的第二个顺序表的长度:");
        scanf("%d",&length);
        printf("请输入%d个数字:\n",length);
        for (i=1;i<=length;i++)
        {
            scanf("%d",&input_number);
            append(&slt2,input_number);
        }
        printf("创建的第一个顺序表是:");display(&slt1);puts("\n");
        printf("创建的第二个顺序表是:");display(&slt2);puts("\n");
        sort_slt(&slt1,slt1.size_);
        sort_slt(&slt2,slt2.size_);
        printf("从小到大排序以后:\n");
        printf("第一个顺序表是:");display(&slt1);puts("\n");
        printf("第二个顺序表是:");display(&slt2);puts("\n");
        if (isempty(&slt2))
        {
            printf("合成后的顺序表:");
            display(&slt1);puts("\n");
        }
        else if (isempty(&slt1))
        {
            printf("合成后的顺序表:");
            display(&slt2);puts("\n");
        }
        else
        {
            if (slt1.a[0] <= slt2.a[0])
            {
                insert_(&slt2,slt1.a[0],0);
                delete_(&slt1,0);
            }
            j=1;
            while (slt1.size_  &&  j= slt2.a[j-1]) )
                {
                    insert_(&slt2,slt1.a[0],j);
                    delete_(&slt1,0);
                }
                else
                {
                    j++;
                }
            }
            printf("合成后的顺序表:");
            display(&slt2);puts("\n");
        }
    }
    return 0;
}

 

你可能感兴趣的:(C/C++)