顺序表的实现

#include <iostream> using namespace std; template <class T> class SeqList { private: T *data; //存放数组 int maxSize; //最大可容纳项数 int last; //当前的最后位置 void reSize(int newSize); //改变data数组空间大小 public: bool getData(int i, SeqList<T> &L, int &x); //取第i个表项的值 int Length(); //求表长度 int Size(); //求表最大体积 SeqList(int sz); //构造函数 SeqList(SeqList<T> &L); //复制构造函数 void setData(int i, T &x); //用x修改第i个表项的值 void input(); //输入 void output(); //输出 }; template <class T> void SeqList<T>::input() { //从标准输入逐个数据输入,建立顺序表 cout << "开始建立顺序表,请输入表中元素个数:"; while(1) { cin >> last; if(last<=maxSize-1) break; cout << "表元素个数输入有误,范围不能超过" << maxSize-1 << ":"; } for(int i=0; i<=last; i++) { cin >> data[i]; cout << "请输入第" << i+1 << "个数:" << endl; } } template <class T> void SeqList<T>::output() { //将顺序表全部元素输出到屏幕上 cout << "顺序表当前元素最后位置为:" << last << endl; for(int i=0; i<=last; i++) cout << "#" << i+1 << " : " << data[i] << endl; } template <class T> void setDate(int i, T &x) { //用x修改第i个表项的值 if(i>0 && i<=last+1) data[i-1] = x; } template <class T> void SeqList<T>::reSize(int newSize) { //将新的长度newSize赋值给maxSize,改变大小 maxSize = newSize; } template <class T> bool SeqList<T>::getData(int i, SeqList<T> &S, int &x) { //在L顺序表中取出第i个表项,赋给x引用 if(i>0 && i<=last+1) { x = S.data[i-1]; return true; } else return false; } template <class T> int SeqList<T>::Length() { return last+1; } template <class T> int SeqList<T>::Size() { return T*Length(); } template <class T> SeqList<T>::SeqList(int sz) { //构造函数,通过指定参数sz定义数组长度 if(sz>0) { maxSize = sz; last = -1; data = new T[maxSize]; if(data==NULL) { cerr << "存储分配错误!" << endl; exit(0); } } } template <class T> SeqList<T>::SeqList(SeqList<T> &L) { //复制构造函数,用参数表中给出的已有顺序表初始化新建的顺序表 maxSize = L.Size(); last = L.Length()-1; T value; data = new T[maxSize]; if(data==NULL) { cerr << "存储分配错误!" << endl; exit(0); } for(int i=1; i<=last+1;i++) L.getData(i, L, &data[i-1]); } void main() { SeqList<int> SL(10); SL.input(); SL.output(); system("pause"); }

你可能感兴趣的:(null,存储,Class,input,include,output)