C++使用模板實(shí)現(xiàn)單鏈表(類(lèi)外實(shí)現(xiàn))
本文實(shí)例為大家分享了C++使用模板實(shí)現(xiàn)單鏈表的具體代碼,供大家參考,具體內(nèi)容如下
這一篇可以和上一篇 點(diǎn)擊打開(kāi)鏈接 模板實(shí)現(xiàn)單鏈表進(jìn)行對(duì)比
看類(lèi)外實(shí)現(xiàn)和類(lèi)內(nèi)實(shí)現(xiàn)的區(qū)別
代碼:
#include <iostream> using namespace std; template<typename T> class CLink { public: class Node; CLink();//無(wú)參的構(gòu)造函數(shù) void InsertHead(T data);//頭插 void InsertTail(T data);//尾插 void Show();//打印 ~CLink();//析構(gòu) Node* Find(T val);//查找 private: class Node { public: Node(T data = 0); ~Node(){} public: T mdata; Node* pnext; }; Node* phead; }; //類(lèi)外實(shí)現(xiàn)無(wú)參的構(gòu)造 template<typename T> CLink<T>::CLink() { phead = new Node(); } //類(lèi)外實(shí)現(xiàn)頭插 template<typename T> void CLink<T>::InsertHead(T data) { Node* pNewNode = new Node(data); pNewNode->pnext = phead->pnext; phead->pnext = pNewNode; } //類(lèi)外實(shí)現(xiàn)尾插 template<typename T> void CLink<T>::InsertTail(T data) { Node* pNewNode = new Node(data); Node* pCur = phead; while(pCur->pnext != NULL) { pCur = pCur->pnext; } pCur->pnext = pNewNode; } //類(lèi)外實(shí)現(xiàn)打印函數(shù) template<typename T> void CLink<T>::Show() { Node* pCur = phead->pnext; while (pCur != NULL) { cout << pCur->mdata << " "; pCur = pCur->pnext; } cout << endl; } //類(lèi)外實(shí)現(xiàn)析構(gòu)函數(shù) template<typename T> CLink<T>::~CLink() { Node* pCur = phead; Node* pNext = phead; while (pCur != NULL) { pNext = pCur->pnext; delete pCur; pCur = pNext; } phead = NULL; } //類(lèi)外實(shí)現(xiàn)結(jié)點(diǎn)的構(gòu)造 template<typename T> CLink<T>::Node::Node(T data) { mdata = data; pnext = NULL; } //類(lèi)外實(shí)現(xiàn)查找函數(shù) template<typename T> typename CLink<T>::Node* CLink<T>::Find(T val) { Node* pCur = phead->pnext; while (pCur != NULL) { if (pCur->mdata == val) { return pCur; } pCur = pCur->pnext; } return pCur; } int main() { CLink<int> link1; CLink<int> link2; for(int i = 0;i < 10;i++) { link1.InsertHead(i + 1); link2.InsertTail(i * 2); } cout << "link1:"; link1.Show(); cout << "link2:"; link2.Show(); link1.Find(10); return 0; }
運(yùn)行結(jié)果:
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
在C/C++與Python之間實(shí)現(xiàn)通信的常見(jiàn)方法
在C/C++與Python之間實(shí)現(xiàn)通信的方式有很多,本文給大家介紹了一些常見(jiàn)的方法,文中通過(guò)代碼示例介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2023-12-12C語(yǔ)言內(nèi)存操作函數(shù)使用示例梳理講解
這篇文章主要介紹了C語(yǔ)言庫(kù)函數(shù)中的內(nèi)存操作函數(shù)memcpy()、memmove()、memset()、memcmp()使用示例分析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-09-09C語(yǔ)言數(shù)據(jù)結(jié)構(gòu) 雙向鏈表的建立與基本操作
這篇文章主要介紹了C語(yǔ)言數(shù)據(jù)結(jié)構(gòu) 雙向鏈表的建立與基本操作的相關(guān)資料,需要的朋友可以參考下2017-03-03C語(yǔ)言實(shí)現(xiàn)求最大公約數(shù)的三種方法
最大公因數(shù),也稱最大公約數(shù)、最大公因子,指兩個(gè)或多個(gè)整數(shù)共有約數(shù)中最大的一個(gè)。本文將為大家介紹三種方法來(lái)實(shí)現(xiàn)求解兩個(gè)正整數(shù)的最大公約數(shù),需要的可以參考一下2021-12-12Qt項(xiàng)目實(shí)戰(zhàn)之實(shí)現(xiàn)MP3音樂(lè)播放器
這篇文章主要為大家詳細(xì)介紹了如何利用Qt實(shí)現(xiàn)MP3音樂(lè)播放器,文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴可以了解一下2023-03-03C語(yǔ)言對(duì)磁盤(pán)文件進(jìn)行快速排序簡(jiǎn)單實(shí)例
這篇文章主要介紹了C語(yǔ)言對(duì)磁盤(pán)文件進(jìn)行快速排序簡(jiǎn)單實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-06-06基于C++編寫(xiě)一個(gè)進(jìn)度條的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何利用C++實(shí)現(xiàn)一個(gè)命令行進(jìn)度條,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以了解一下2023-06-06