C 语言

关注公众号 jb51net

关闭
首页 > 软件编程 > C 语言 > C++单链表

C++使用模板实现单链表

作者:牧童遥指杏花村丫

这篇文章主要为大家详细介绍了C++使用模板实现单链表,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

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

话不多说 直接上代码

#include <iostream>
using namespace std;
 
template<typename E>
class CLink;
 
template<typename T>
class Node
{
 friend class CLink<T>;
 
public:
 /*
 构造函数和析构函数一般不加类型参数
 本类类中除了构造函数和析构函数以外
 其它的地方都要加上类型参数
 */
 Node(T data = 0)
 {
 mdata = data;
 pnext = NULL;
 }
 ~Node(){}
 
private:
 T mdata;
 Node<T>* pnext;
};
 
template<typename T>
class CLink
{
public:
 CLink()
 {
 phead = new Node<T>();
 }
 void InsertHead(T data)
 {
 Node<T>* pNewNode = new Node<T>(data);
 pNewNode->pnext = phead->pnext;
 phead->pnext = pNewNode;
 } 
 
 void InsertTail(T data)
 {
 Node<T>* pNewNode = new Node<T>(data);
 Node<T>* pCur = phead;
 while(pCur->pnext != NULL)
 {
 pCur = pCur->pnext;
 }
 pCur->pnext = pNewNode;
 }
 
 void Show()
 {
 Node<T>* pCur = phead->pnext;
 while (pCur != NULL)
 {
 cout << pCur->mdata << " ";
 pCur = pCur->pnext;
 }
 cout << endl;
 }
 
 ~CLink()
 {
 Node<T>* pCur = phead;
 Node<T>* pNext = phead;
 while (pCur != NULL)
 {
 pNext = pCur->pnext;
 delete pCur;
 pCur = pNext;
 }
 phead = NULL;
 } 
 
private:
 Node<T>* phead;
};
 
int main()
{
 CLink<int> list1;
 CLink<int> list2;
 
 for(int i = 0;i < 10;i++)
 {
 list1.InsertHead(i + 1);
 list2.InsertTail(i * 2);
 }
 cout << "list1:";
 list1.Show();
 
 cout << "list2:";
 list2.Show();
 
 return 0;
}

运行结果:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文