输入说明 :
第一行:顺序表A的长度
第二行:顺序表A的数据元素(数据元素之间以空格分隔)
第三行:待删除数据元素
输出说明 :
第一行:删除前的顺序表遍历结果
空行
第二行:删除后的顺序表遍历结果(非空)
empty(空)(在本题目的前提条件下不应该出现,为保证算法的鲁棒性增加的测试数据)
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
template<class ElemType>
void print(vector<ElemType> a,int len) {
for( int m=0; m<=len; ++m) {
cout<<a[m]<<' ';
}
cout<<endl;
}
template<class ElemType>
void DeleteItem( vector<ElemType> &a, ElemType item ) {
int low=0,high=a.size()-1;
print(a,high);
cout<<endl;
while(low<high) {
if(a[low]==item) {
a[low]=a[high];
high--;
}
if(a[low]!=item) {
low++;
}
}
if(high<=0) {
cout<<"empty"<<endl;
return;
}
print(a,high);
}
int main() {
int n,item,elem;
cin>>n;
vector<int> v;
for(int i=0; i<n; ++i) {
if(cin>>elem)
v.push_back(elem);
}
cin>>item;
DeleteItem(v,item);
return 0;
}