删除顺序表中大于x的元素用C++怎么写啊
还要注意算法效率,每个元素不要多次移动
运行结果:
代码如下:
#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;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!