欢迎来到代码驿站!

C代码

当前位置:首页 > 软件编程 > C代码

C++使用模板实现单链表(类外实现)

时间:2021-03-11 10:08:43|栏目:C代码|点击:

本文实例为大家分享了C++使用模板实现单链表的具体代码,供大家参考,具体内容如下

这一篇可以和上一篇 点击打开链接 模板实现单链表进行对比 

看类外实现和类内实现的区别

代码:

#include <iostream>
using namespace std;
 
template<typename T>
class CLink
{
public:
 class Node;
 CLink();//无参的构造函数
 void InsertHead(T data);//头插
 void InsertTail(T data);//尾插
 void Show();//打印
 ~CLink();//析构
 Node* Find(T val);//查找
 
private:
 class Node
 {
 public:
 Node(T data = 0);
 ~Node(){}
 public:
 T mdata;
 Node* pnext;
 };
 Node* phead;
};
 
//类外实现无参的构造
template<typename T>
CLink<T>::CLink()
{
 phead = new Node();
} 
 
//类外实现头插
template<typename T>
void CLink<T>::InsertHead(T data)
{
 Node* pNewNode = new Node(data);
 pNewNode->pnext = phead->pnext;
 phead->pnext = pNewNode;
}
 
 
//类外实现尾插
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;
}
 
 
//类外实现打印函数
template<typename T>
void CLink<T>::Show()
{
 Node* pCur = phead->pnext;
 while (pCur != NULL)
 {
 cout << pCur->mdata << " ";
 pCur = pCur->pnext;
 }
 cout << endl;
}
 
//类外实现析构函数
template<typename T>
CLink<T>::~CLink()
{
 Node* pCur = phead;
 Node* pNext = phead;
 while (pCur != NULL)
 {
 pNext = pCur->pnext;
 delete pCur;
 pCur = pNext;
 }
 phead = NULL;
}
 
//类外实现结点的构造
template<typename T>
CLink<T>::Node::Node(T data)
{
 mdata = data;
 pnext = NULL;
}
 
//类外实现查找函数
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;
}

运行结果:

上一篇:C语言中fgetgrent()函数和fgetpwent()函数的用法对比

栏    目:C代码

下一篇:C++时间戳转换成日期时间的步骤和示例代码

本文标题:C++使用模板实现单链表(类外实现)

本文地址:http://www.codeinn.net/misctech/78795.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有