线性表删除串元素

#include
#include<bits/stdc++.h>//万能头文件
using namespace std;
#define MAX 10
#define NE 1
class List {
private:
int *elem;
int length;
int maxlong;
public:
void SetList();//构造线性表
void InputList();//输入数据
void OutputList() ;//输出数据
void DeleteElem() ;//删除所有元素值[x,y]之间的所有元素
bool Deldetx( int x);//删除其值等于给的值x的第一个元素的算法
void SegmentationList();//以第一个元素为分界线所有小于它的元素移到该元素的前面将所有大于它的元素移到该元素的后面
};在这里插入代码片

//构造线性表
void List::SetList() {
this->elem = new int[MAX];
this->length = 0;
this->maxlong = MAX;
}

//输入数据
void List::InputList() {
int n;
cout << “请输入数据个数:” << endl;
cin >> n;
while ( n > this->maxlong) {
int *p,maxlong;
maxlong = this->maxlong + NE;
p = this->elem;
this->elem = new int[maxlong] ;
delete p;
this->maxlong = maxlong;
}
this->length = n;
cout << “请输入数据:” << endl;
for(int i=0; i < n; i++) {
cin >> this->elem[i];
}
}

//输出数据
void List::OutputList() {
cout << "数据为 : " << endl;
for (int j = 0; jlength; j++) {
cout << this->elem[j] << “\t”;
}
}

//删除所有元素值[x,y]之间的所有元素
void List::DeleteElem() {
int x,y,consts=0;
cout << endl << "请输入删除元素最小值 : " << endl;
cin >> x;
cout << endl << "请输入删除元素最大值 : " << endl;
cin >> y;
for(int i=0; i < this->length; i++) {
if(this->elem[i]>=x&& this->elem[i]<=y) {
consts++;
} else {
this->elem[i-consts] = this->elem[i];
}

}
this->length -= consts;
OutputList();

}

bool List::Deldetx(int x) {
int lengthy = length;
for(int j=0; j<length; j++) {
if(elem[j] == x) {
for(int i=j; i<length; i++) {
elem[i] = elem[i+1];
}
length–;
return true;
}
}
if(length == lengthy ){
return false;

}

OutputList();

}

void swap(int &a, int &b)
{
int t;
t = a;
a = b;
b = t;
}
void List::SegmentationList()
{
int e = this->elem[0];
int i,j;
for(i=1;ilength;i++)
{
for(j=i;this->elem[j]!=e;j–)
{
if(this->elem[j]elem[j-1])
swap(this->elem[j],this->elem[j-1]);
if(this->elem[j]==e)break;
}
}
OutputList();
}

int main() {
List L;
L.SetList();
L.InputList();
L.OutputList();
L.DeleteElem();
int x;
cout << endl<< “请输入需要删除的元素:” << endl;
cin >> x;
L.Deldetx(x);
L.OutputList();
L.SegmentationList();
return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值