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

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

通过数组、循环、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 15: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月15日
  • 已采纳回答 9月7日
  • 赞助了问题酬金10元 9月5日
  • 创建了问题 9月5日

悬赏问题

  • ¥15 对于知识的学以致用的解释
  • ¥50 三种调度算法报错 有实例
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败