#include <iostream><br />using namespace std;<br />template <class T><br />class SeqList<br />{<br />private:<br />T *data;//存放數組<br />int maxSize;//最大可容納項數<br />int last;//當前的最後位置<br />void reSize(int newSize);//改變data數組空間大小<br />public:<br />bool getData(int i, SeqList<T> &L, int &x);//取第i個表項的值<br />int Length();//求表長度<br />int Size();//求表最大體積<br />SeqList(int sz);//建構函式<br />SeqList(SeqList<T> &L);//複製建構函式<br />void setData(int i, T &x);//用x修改第i個表項的值<br />void input();//輸入<br />void output();//輸出<br />};<br />template <class T><br />void SeqList<T>::input()<br />{<br />//從標準輸入逐個資料輸入,建立順序表<br />cout << "開始建立順序表,請輸入表中元素個數:";<br />while(1)<br />{<br />cin >> last;<br />if(last<=maxSize-1)<br />break;<br />cout << "表元素個數輸入有誤,範圍不能超過" << maxSize-1 << ":";<br />}<br />for(int i=0; i<=last; i++)<br />{<br />cin >> data[i];<br />cout << "請輸入第" << i+1 << "個數:" << endl;<br />}<br />}<br />template <class T><br />void SeqList<T>::output()<br />{<br />//將順序表全部元素輸出到螢幕上<br />cout << "順序表當前元素最後位置為:" << last << endl;<br />for(int i=0; i<=last; i++)<br />cout << "#" << i+1 << " : " << data[i] << endl;<br />}<br />template <class T><br />void setDate(int i, T &x)<br />{<br />//用x修改第i個表項的值<br />if(i>0 && i<=last+1)<br />data[i-1] = x;<br />}<br />template <class T><br />void SeqList<T>::reSize(int newSize)<br />{<br />//將新的長度newSize賦值給maxSize,改變大小<br />maxSize = newSize;<br />}<br />template <class T><br />bool SeqList<T>::getData(int i, SeqList<T> &S, int &x)<br />{<br />//在L順序表中取出第i個表項,賦給x引用<br />if(i>0 && i<=last+1)<br />{<br />x = S.data[i-1];<br />return true;<br />}<br />else<br />return false;<br />}<br />template <class T><br />int SeqList<T>::Length()<br />{<br />return last+1;<br />}<br />template <class T><br />int SeqList<T>::Size()<br />{<br />return T*Length();<br />}<br />template <class T><br />SeqList<T>::SeqList(int sz)<br />{<br />//建構函式,通過指定參數sz定義數組長度<br />if(sz>0)<br />{<br />maxSize = sz;<br />last = -1;<br />data = new T[maxSize];<br />if(data==NULL)<br />{<br />cerr << "儲存分配錯誤!" << endl;<br />exit(0);<br />}<br />}<br />}<br />template <class T><br />SeqList<T>::SeqList(SeqList<T> &L)<br />{<br />//複製建構函式,用參數表中給出的已有順序表初始化建立的順序表<br />maxSize = L.Size();<br />last = L.Length()-1;<br />T value;<br />data = new T[maxSize];<br />if(data==NULL)<br />{<br />cerr << "儲存分配錯誤!" << endl;<br />exit(0);<br />}<br />for(int i=1; i<=last+1;i++)<br />L.getData(i, L, &data[i-1]);<br />}<br />void main()<br />{<br />SeqList<int> SL(10);<br />SL.input();<br />SL.output();<br />system("pause");<br />}