雷火电竞-中国电竞赛事及体育赛事平台

歡迎來到入門教程網(wǎng)!

C語言

當(dāng)前位置:主頁 > 軟件編程 > C語言 >

C++使用模板實(shí)現(xiàn)單鏈表(類外實(shí)現(xiàn))

來源:本站原創(chuàng)|時(shí)間:2020-01-10|欄目:C語言|點(diǎn)擊:

本文實(shí)例為大家分享了C++使用模板實(shí)現(xiàn)單鏈表的具體代碼,供大家參考,具體內(nèi)容如下

這一篇可以和上一篇 點(diǎn)擊打開鏈接 模板實(shí)現(xiàn)單鏈表進(jìn)行對比 

看類外實(shí)現(xiàn)和類內(nèi)實(shí)現(xiàn)的區(qū)別

代碼:

#include <iostream>
using namespace std;
 
template<typename T>
class CLink
{
public:
 class Node;
 CLink();//無參的構(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;
};
 
//類外實(shí)現(xiàn)無參的構(gòu)造
template<typename T>
CLink<T>::CLink()
{
 phead = new Node();
} 
 
//類外實(shí)現(xiàn)頭插
template<typename T>
void CLink<T>::InsertHead(T data)
{
 Node* pNewNode = new Node(data);
 pNewNode->pnext = phead->pnext;
 phead->pnext = pNewNode;
}
 
 
//類外實(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;
}
 
 
//類外實(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;
}
 
//類外實(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;
}
 
//類外實(shí)現(xiàn)結(jié)點(diǎn)的構(gòu)造
template<typename T>
CLink<T>::Node::Node(T data)
{
 mdata = data;
 pnext = NULL;
}
 
//類外實(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é)果:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持我們。

上一篇:C++設(shè)計(jì)模式迪米特法則實(shí)例

欄    目:C語言

下一篇:C語言實(shí)現(xiàn)flappy bird游戲

本文標(biāo)題:C++使用模板實(shí)現(xiàn)單鏈表(類外實(shí)現(xiàn))

本文地址:http://www.jygsgssxh.com/a1/Cyuyan/560.html

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請與我們聯(lián)系,我們將在24小時(shí)內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有