順序表的實現

來源:互聯網
上載者:User

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.