順序表結構的模版類

來源:互聯網
上載者:User
//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;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.