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 远程桌面文档内容复制粘贴,格式会变化
  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题