//List.h #ifndef LIST_H #define LIST_H #define MAXSIZE 100 #include <iostream> using namespace std; template <class T> class List { public: List(); virtual ~List(); void InitList(); void Insert(int pos, T val); //返回插入的内容 T Del(int pos); //返回删除的内容 void Clean(); bool IsEmpty(); T GetVal(int pos); T SetVal(int pos, T val); void Display(); protected: T data[MAXSIZE]; int len; private: }; #endif // LIST_H //List.cpp 注意函数的书写形势。
#include "../include/List.h" template <class T> List<T>::List() { // len = 0; for(int i=0; i<MAXSIZE-5; i++) { data[i] = 1; } len = MAXSIZE-5; } template <class T> List<T>::~List() { delete[] data; } template <class T> void List<T>::InitList() { int i = 0; while(1) { cin >> data[i]; if(data[i]==0) { break; } i++; len++; } } template <class T> void List<T>::Display() { for(int i=0; i<len; i++) { cout<< data[i] <<" "; } cout << endl; cout <<endl; } template <class T> void List<T>::Insert(int pos, T val) //pos为下标 { if(len<(MAXSIZE-1)) {//判断是否溢出 if(pos<=len) { for(int i=0;i<(len-pos-1);i++) { data[len-i] = data[len-1-i];//搬移 } data[pos] = val; len++; }else { cout<<"不可插入的位置!" <<endl; } }else { cout<<"无足够空间" <<endl; } } template <class T> T List<T>::Del(int pos) { T temp = data[pos]; for(int i=pos;i<len-1;i++) { data[i] = data[i+1]; } len--; return temp; } template <class T> bool List<T>::IsEmpty() { if(len==0) { return true; } return false; } template <class T> void List<T>::Clean() { len = 0; } template <class T> T List<T>::GetVal(int pos) { return data[pos]; } template <class T> T List<T>::SetVal(int pos, T val) { T temp = data[pos]; data[pos] = val; return temp; } //main #include "./include/List.h" #include "./src/List.cpp" //不添加该文件main中的List提示未定义 int main() { // cout << "初始化顺序表:" <<endl; List<int> list; // list.InitList(); list.Display(); list.Insert(99,2); list.Insert(2,2); list.Display(); // cout<<list.GetVal(2)<<endl; list.Del(2); list.Display(); /* list.Clean(); cout << list.IsEmpty() <<endl;*/ list.SetVal(2,8); list.Display(); return 0; }