在顺序表中删除值为x和y的元素(数据结构)

顺序表的数据元素的类型为整型,初始输入若干个数据元素,可以有相同值,删去值为 x 和 y 的数据元素。
输入描述:输入初始数据元素的个数 n ,占一行 输入 n 个初始数据元素,以空格隔开,占一行 输入 x 和 y,以空格隔开;
输出描述:输出删去 x 和 y 后的数据元素,以空格隔开,最后一个元素后面有空格;若删除后顺序表为空,则输出“顺序表已为空”。
输入样例1:
10
1 5 6 8 7 8 6 8 4 8
8 6
输出样例1:
1 5 7 4

输入样例2:
5
6 8 6 8 6
8 6
输出样例2:
顺序表已为空
补全如下代码

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int i, temp, j, m, m1, m2;
    int m3 = 0;
    scanf("%d", &m);
    int *a = (int*) malloc(m * sizeof(int));
    for(i = 0; i < m; i++)
    {
        scanf("%d", &a[i]);
    }
    scanf("%d %d", &m1, &m2);
    
//删除元素m1、m2
/***********Begin***********/




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

   
    free(a);
    return 0;
}

都是数组的遍历问题,代码如下:

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int i, temp, j, m, m1, m2;
    int m3 = 0;
    scanf("%d", &m);
    int *a = (int*) malloc(m * sizeof(int));
    for(i = 0; i < m; i++)
    {
        scanf("%d", &a[i]);
    }
    scanf("%d %d", &m1, &m2);

    //删除元素m1、m2
    /***********Begin***********/
    j=0;
    for(i=0;i<m;i++)
    {
        if(a[i]!= m1 && a[i]!=m2)
        {
            a[j] = a[i];
            j++;
        }
    }
    if(j==0)
        printf("顺序表已为空");
    else
        for(i=0;i<j;i++)
            printf("%d ",a[i]);


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



    free(a);
    return 0;
}


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

【相关推荐】




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