m0_73504877 2022-09-05 04:41 采纳率: 100%
浏览 190
已结题

有序顺序结构线性表的合并操作

通过数组、循环、scanf语句实现输入两个有序的初始线性表LA和LB。将LB中的元素依次插入到LA有序表中去,完成线性表合并,合并后的线性表依然是有序的,并且要求两个线性表中相同的数据只保留一个即可。例如:执行结果大致如下:
请输入线性表LA:1 3 5 7 9
请输入线性表LB:1 2 3 4 5
合并后的有序线性表LA为:1 2 3 4 5 7 9

  • 写回答

2条回答 默认 最新

  • fuill 2022-09-05 07:28
    关注

    解答如下,有问题请回复

    img

    #include  <stdio.h>
    #define MAXSIZE 100
    typedef int DataType;
    typedef struct{
           DataType data[MAXSIZE];
           int last;
    }Seqlist;
    
    /**********************************/
    /*函数名称:initseqlist()         */
    /*函数功能:初始化顺序表          */
    /**********************************/
    void initseqlist(Seqlist *L)
    {    L->last=0;
    }
    
    /**********************************/
    /*函数名称:input()               */
    /*函数功能:输入顺序表            */
    /**********************************/
    void input(Seqlist *L)
    {      
        DataType x;
           initseqlist(L);
           char flag=0; 
           do
           {    
           scanf("%d",&x);
           L->data[L->last++]=x;
           flag=getchar();
        }while(flag!='\n');
    }
    
    /**********************************/
    /*函数名称:print()               */
    /*函数功能:输出顺序表            */
    /**********************************/
    void print(Seqlist *L)
    {   
        int i;
        if(L->last==0)
            printf("顺序表为空\n");
        else
            for(i=0;i<L->last;i++)
                {      printf("%5d",L->data[i]);
                if((i+1)%10==0) printf("\n");
            }
        printf("\n");
    }
    void insert(Seqlist *L,int x)
    {
        int i,j;
        for(i=0;i<L->last;i++)
        {
            if(L->data[i]>x)
            {
                if(L->data[i-1]!=x)
                {
                    for(j=L->last;j>i;j--)
                    {
                        L->data[j]=L->data[j-1];
                    }
                    L->data[i]=x;
                    L->last++;
                }
                break;
            }
        }
    }
    void merge(Seqlist *LA,Seqlist *LB)
    {
        int i,j,k;
        for(i=0;i<LB->last;i++)
        {
            insert(LA,LB->data[i]);
        }
    }
    int main()
    {
        Seqlist LA,LB,LC;
        printf("请输入线性表LA:");
        input(&LA); 
        printf("请输入线性表LB:");
        input(&LB); 
        printf("合并后的有序线性表LA为:");
        merge(&LA,&LB);
        print(&LA);
        return 0;
    }
    

    展开全部

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 9月14日
  • 已采纳回答 9月7日
  • 赞助了问题酬金10元 9月5日
  • 创建了问题 9月5日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部