在有序顺序表中插入两个元素(数据结构)

表中数据元素的数据类型为整型,按有序方式(从小到大)输入表中初始元素,再输入两个整数,以空格隔开,将两个整数插入到有序表中的正确位置。
输入描述:输入有序表中元素的个数 n,占一行; 按从小到大的顺序输入n个整数,以空格隔开,占一行; 输入待插入元素x , y,占一行。
输出描述:输出插入x 和 y 之后的有序表,以空格隔开,最后一个整数后面要求有空格。
测试输入1:
6
1 3 5 9 11 13
4 10
预期输出1:
1 3 4 5 9 10 11 13

测试输入2:
1
5
1 3
预期输出2:
1 3 5
根据提示,补充代码。

#include<stdio.h>
int main()
{
    int flag = 0;
    int x, y, i, j, n;
    int a[100] = {0};
    
    scanf("%d", &n);
    for(i=0; i<n; i++)
    {
        scanf("%d", &a[i]);
    }
    scanf("%d %d", &x, &y);

//将x y 有序插入到数组a中
/***********Begin***********/




/************End************/ 

    
    
    for(i=0; i<n; i++)
    {
        printf("%d ", a[i]);
    }
    
    return 0;
}

不要修改原代码,不要删除注释

代码如下:

#include<stdio.h>
int main()
{
    int flag = 0;
    int x, y, i, j, n;
    int a[100] = {0};

    scanf("%d", &n);
    for(i=0; i<n; i++)
    {
        scanf("%d", &a[i]);
    }
    scanf("%d %d", &x, &y);

    //将x y 有序插入到数组a中
    /***********Begin***********/
    if(x>y) //先插入小的
    {
        i = x;
        x = y;
        y = i;
    }
    
    for(i=0;i<n;i++)
    {
        if(flag == 0) //说明x还没有插入
        {
            if(a[n-1]<x)
            {
                a[n] = x;
                n++;
                flag = 1;
            }
            else if(a[i]> x)
            {
                for(j=n;j>i;j--)
                    a[j] =a[j-1];
                a[i] = x;
                n++;
                flag = 1;
            }else if(a[i]==x)
                flag = 1;
        }else
        {
            if(a[n-1] < y)
            {
                a[n] = y;
                n++;
                break;
            }
            if(a[i]> y)
            {
                for(j=n;j>i;j--)
                    a[j] =a[j-1];
                a[i] = y;
                n++;
                break;
            }else if(a[i]==y)
                break;
        }
        
    }



    /************End************/ 



    for(i=0; i<n; i++)
    {
        printf("%d ", a[i]);
    }

    return 0;
}


您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632

【相关推荐】




如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^