欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

順序表中的類模板如何實現調用

錢淋西2年前17瀏覽0評論

順序表中的類模板如何實現調用?

可以將模板類SeqList的定義及成員函數的實現代碼全部寫到SeqList.h頭文件中,則在實例化該類后可進行基本的線性表操作

具體的代碼怎么寫,其實核心就是 template<class T> 其中 T 就是一個未知的類型,在寫頭文件時,變量的類型都用T代替。用戶在使用此模板時應該把要使用的變量類型填入進去(可以是基本類型 如 int char 等等 也可以是用戶自定義的復雜類型 如 結構體、類)

下面是SeqList.h頭文件的寫法(這里把實現代碼也寫在了頭文件中)

[cpp] view plain copy

#ifndef SEQLIST_H_INCLUDED

#define SEQLIST_H_INCLUDED

#include <iostream>

using namespace std;

const int MAX = 1005;

template <class T>

class SeqList{

public:

SeqList(){length = 0;}//無參構造函數

SeqList(const T a[], int n);//有參構造函數,使用含有n個元素的數組a初始化

int GetSeqList(){return length;}//獲取順序表的長度

void PrintSeqList();//按順序打印表中的元素

void Insert(int i, T x);//在順序表的第i個位置插入值為x的新元素

T Delete(int i);//刪除順序表第i個元素,并返回該元素的值

T Get(int i);//獲取順序表第i個元素

int Locate(T x);//查找順序表中值為x的元素,找到后返回其位置

private:

T date[MAX];

int length;

};

template<class T>

SeqList<T>::SeqList(const T a[], int n)

{

if(n > MAX) throw "數組長度超過線性表最大長度" ;

for(int i = 0; i < n; i++)

date[i] = a[i];

length = n;

}

template<class T>

void SeqList<T>::PrintSeqList()

{

cout << "按序號一次遍歷線性表中的各個數據元素:" << endl;

for(int i = 0; i < length; i++)

cout << date[i] << " ";//若數據類型為復雜類型,應當對 << 進行重載

cout << endl;

}

template<class T>

void SeqList<T>::Insert(int i, T x)

{

if(length >= MAX) throw "上溢異常";

if(i < 1 || i > length + 1) throw "位置異常";

for(int j = length; j >= i; j--)

date[j] = date[j-1];

date[i-1] = x;

length++;

}

template<class T>

T SeqList<T>::Delete(int i)

{

if(length == 0) throw "下溢異常";

if(i < 1 || i > length) throw "位置異常";

T x = date[i-1];

for(int j = i; j < length; j++)

date[j-1] = date[j];

length--;

return x;

}

template<class T>

T SeqList<T>::Get(int i)

{

if(i < 1 || i > length) throw "查找位置非法";

return date[i-1];

}

template<class T>

int SeqList<T>::Locate(const T x)

{

for(int i = 0; i < length; i++)

if(x == date[i]) return i + 1;

return 0;//查找失敗

}

#endif // SEQLIST_H_INCLUDED

下面是使用該頭文件

[cpp] view plain copy

#include <iostream>

#include "SeqList.h"

using namespace std;

int main()

{

int a[7] = {1, 2, 3, 4, 5, 6, 7};

SeqList<int> List(a, 7);

List.PrintSeqList();

List.Insert(1, 0);

List.PrintSeqList();

int x = List.Delete(8);

cout << "刪除元素:" << x << endl;

List.PrintSeqList();

int p = List.Locate(4);

cout << "元素4的位置:" << p << endl;

return 0;

}

成都朗沃教育,國內知名的it培訓機構,12年教育培訓經驗!以上是小編的個人見解分享,希望對大家有所幫助,如有不當的地方還請包涵!

seqlist java,順序表中的類模板如何實現調用