您的位置:首页 > 编程语言 > C语言/C++

c++链表的操作

2015-01-04 15:57 239 查看
c++根据数据结构

实现了顺序表的倒置和表中数据的删除,很简单。
#include<iostream>
using namespace std;

template <class T>
class SeqList{
public:
SeqList(int mSize);
~SeqList(){ delete [] elements; }
bool Insert(int i,T x);
void Delete_value(T value);
void Output(ostream& out)const;
void Invert();
private:
int maxLength;
T* elements;
int n;
};

template<class T>
SeqList<T> :: SeqList(int mSize){
maxLength = mSize;
elements = new T[maxLength];
n =0;
}

template<class T>
bool SeqList<T> :: Insert(int i, T x){
if(i < -1 || i > n-1){
cout << "Out of Bounds" << endl;
return false;
}
if(n == maxLength){
cout << "OverFlow" << endl;
return false;
}
for(int j = n-1; j > i; j--)
elements[j+1] = elements[j];
elements[i+1] = x;
n++;
return true;
}

template<class T>
void SeqList<T> :: Delete_value(T value){
int ncount = 0;
for(int i = 0; i < n; i++){
if(ncount > 0)
elements[i-ncount] = elements[i];
if(elements[i] == value){
ncount ++ ;
}
}
n = n - ncount;
}

template<class T>
void SeqList<T> :: Output(ostream& out)const{
for(int i =0; i < n; i++)
out << elements[i] <<" ";
out << endl;
}

template<class T>
void SeqList<T> :: Invert(){
T temp;
temp = elements[0];
for(int i = 0; i < n/2; i++){
temp = elements[i];
elements[i] = elements[n-i-1];
elements[n-i-1] = temp;
}
}

int main(){

int mSize;
cin >> mSize;
SeqList<int> seq(mSize);
int value,i;
for(i = 0; i < mSize; i++){
cin >> value;
seq.Insert(i - 1,value);
}
int deletenum ;
cin >> deletenum;

int cmSize;
cin >> cmSize;
SeqList<char> cseq(cmSize);
char cvalue;
for(i = 0; i < cmSize; i++){
cin >> cvalue;
cseq.Insert(i - 1,cvalue);
}
char deletechar;
cin >> deletechar;

int dmSize;
cin >> dmSize;
SeqList<double> dseq(dmSize);
double dvalue;
for(i = 0; i < dmSize; i++){
cin >> dvalue;
dseq.Insert(i - 1,dvalue);
}
double deletedouble;
cin >> deletedouble;

seq.Invert();
seq.Output(cout);
seq.Delete_value(deletenum);
seq.Output(cout);

cseq.Invert();
cseq.Output(cout);
cseq.Delete_value(deletechar);
cseq.Output(cout);

dseq.Invert();
dseq.Output(cout);
dseq.Delete_value(deletedouble);
dseq.Output(cout);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: