数据结构与算法C++

删除顺序表中大于x的元素用C++怎么写啊
还要注意算法效率,每个元素不要多次移动

运行结果:

img

代码如下:

#include<stdio.h>
#define maxsize 100
typedef int ElemType;
typedef struct
{
    ElemType elem[maxsize];
    int last;
}SeqList;

int main()
{
    SeqList L;
    int i,j=0,X;
    L.last = 0;
    printf("请输入顺序表中元素的个数:");
    scanf("%d", &L.last);
    printf("请输入表中的数据:");
    for (i = 0; i < L.last; i++)
    {
        scanf("%d", &L.elem[i]);
    }
    printf("请输入需要删除的X(大于X的都删除):");
    scanf("%d", &X);
    //删除
    for (i = 0; i < L.last; i++)
    {
        if (L.elem[i] <= X)
            L.elem[j++] = L.elem[i];
    }
    L.last = j;

    printf("删除后的元素:\n");
    for (i = 0; i < L.last; i++)
        printf("%d ", L.elem[i]);
    return 0;
    
}

将小于等于x的元素放到顺序表开头即可

#include <iostream>
using namespace std;

typedef struct _sqlist
{
    int  data[1000];
    int count;
}sqlist;

void RemoveData(sqlist s,int x)
{
    int i,j=0;
    for(i=0;i<s.count;i++)
    {
        if(s.data[i] <= x)
            s.data[j++] = s.data[i];
    }
    s.count = j;
}

int main()
{
    sqlist s;
    int i,n,d,x;
    cin>>n;
    for(i=0;i<n;i++)
    {
        cin>>d;
        s.data[i] = d;
        s.count++;
    }
    cin>>x;
    RemoveData(s,x);
    for(i=0;i<s.count;i++)
        cout<<s.data[i]<<" ";
    return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632