#include<iostream>
using namespace std;
template<class T>
class SeqList{
public:
friend void Converts(SeqList<T> &L);
SeqList(int MaxListSize =100);
~SeqList(){
delete[]data;
}
void InsertElem(int i,T x);
void DeleteElem(T&x);
void PrintList();
private:
int length ;
int MaxSize;
T *data;
};
template<class T>
SeqList<T>::SeqList(int MaxListSize){ //构造函数
MaxSize=MaxListSize;
data=new T[MaxSize];
length=0;
}
template<class T>
void SeqList<T>::InsertElem(int i,T x){ //插入元素
if(i<1||i>length+1){
cout<<"position error" <<endl ;
return ;
}
for(int j=length-1;j>=i;j--)
data[j+1]=data[j];
data[i-1]=x;
length++;
}
template <class T>
void SeqList<T>::DeleteElem(T &x){//删除元素
for(int i=1;i<=length;i++){
if(x==data[i-1]){
for(int j=i;j<length;j++)
data[j-1]=data[j] ;
length-- ;
}
}
}
template <class T>
void SeqList<T>::PrintList(){//打印线性表
if(length==0){
cout<<" "<<endl;
}
else{
for(int i=0;i<length;i++)
cout<<data[i]<<" ";
cout<<endl;
}
}
template<class T>
void Converts(SeqList<T> & L)//线性表转置
{
T x;
int i,k;
k=L.length/2;
for(i=0;i<k;i++){
x=L.data[i];
L.data[i]=L.data[L.length-i-1];
L.data[L.length-i-1]=x;
}
}
int main(){
int n,del;
int i;
cout<<"input the length of the list:";
cin>>n;
int *a=new int [n];
SeqList<int>L1 (n);
cout<<"input the list:";
for(i=1;i<=n;i++){
cin>>a[i];
L1.InsertElem(i,a[i]);
}
cout<<"input the element to delete:";
cin>>del;
Converts(L1);
cout<<"after convert:";
L1.PrintList();
L1.DeleteElem(del);
cout<<"after delete:";
L1.PrintList();
return 0;
}
c++关于线性表的基本操作
最新推荐文章于 2022-04-28 13:32:26 发布