//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;}