1.顺序表——用一个类模板来保存到相应类型数组中

1.有不清楚类模板的,请先参考如下

   http://blog.csdn.net/ogre2012/archive/2010/05/28/5631789.aspx

2.建一个类模板,及相应类型的数组(用来保存相应类型的数据)

   #include using namespace std; //该顺序表中最大的容量,用const 来定义 int const max_size = 100; //声明一个模板类 template class Seqlist { public: Seqlist(); ~Seqlist(); //打印数据 void print(); private: Type * seqPtr; //定义一个相应数据类型的指针,而不是模板类的指针,别搞混淆了 int currentIndex; //当前索引 int const maxSize; //模板类中的数组最大容量 }; template void Seqlist::print() { cout<<"print"< Seqlist::Seqlist():maxSize(max_size) { //初始化数据类型的指针,指向相应类型的数组 seqPtr = new Type[maxSize]; } template Seqlist::~Seqlist() { } template int Seqlist::AddElement(Type const x,int index) { }

注意:

1.const的用法:

     第4行代码中,是用来表示这是一个固定的值,不允许以后再进行修改。

     第36行中,表示的是,在用到该函数之前,必须传一个已经定义的变量名,给参数中的x,但是不会因为某些异常而去改变了,原来的变量值。

2.构造函数对其成员变量初始化:

    可以参考第27行中的代码

3.指向数组的指针

   //定义一个模板类型的指针 Type * seqPtr; //初始化数据类型的指针,指向相应类型的数组 seqPtr = new Type[maxSize];

3.功能:

   //打印数据 void print(); //增加数据 int addElement(Type const data,int index); //删除数据 int deleteElement(int index); //查找数据 int searchElement(int index);

4.正确的代码

     SeqList.h

    #include using namespace std; //该顺序表中最大的容量,用const 来定义 int const max_size = 100; //声明一个模板类 template class Seqlist { public: Seqlist(); ~Seqlist(); //打印数据 void print(); //增加数据 int addElement(Type const data,int index); //删除数据 int deleteElement(int index); //查找数据 int searchElement(int index); private: Type * seqPtr; //定义一个相应数据类型的指针,而不是模板类的指针,别搞混淆了 int currentIndex; //当前索引 const int maxSize; //模板类中的数组最大容量 }; template void Seqlist::print() { cout<<"所有数据如下:"< Seqlist::Seqlist():maxSize(max_size),currentIndex(-1) { //初始化数据类型的指针,指向相应类型的数组 seqPtr = new Type[maxSize]; } template Seqlist::~Seqlist() { } //增加元素 template int Seqlist::addElement(Type const data,int index) { if (index<0||index>(currentIndex+1)||index>=(maxSize-1)) { cout<<"错误的插入索引值,当前的索引值为"<<(currentIndex+1)<index;j--) { seqPtr[j+1] = seqPtr[j]; } //保存插入的数据 seqPtr[index] = data; cout<<"插入数据成功"< int Seqlist::deleteElement(int index) { //3种情况需要排除,index小于0,大于当前的索引值,大于最大的索引值减1 if (index<0||index>currentIndex||index>=(maxSize-1)) { cout<<"错误的删除索引值,当前的最大索引值为"< int Seqlist::searchElement(int index) { if (index<0||index>currentIndex) { cout<<"错误的查找索引值,当前的最大索引值为"<

SeqTest.cpp

    #include "SeqList.h" int main() { //定义一个模板类对象 Seqlist seq; seq.addElement(2008,0); seq.addElement(2009,1); seq.addElement(2010,2); seq.addElement(2011,3); seq.addElement(2012,4); //调用其一个函数 seq.print(); seq.deleteElement(4); seq.print(); seq.deleteElement(2); seq.print(); //查找数据 seq.searchElement(5); seq.searchElement(2); }

 

 

 

 

   

  

你可能感兴趣的:(C++数据结构与算法,2010)