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

 更新时间:2020年04月26日 10:45:15   作者:牧童遥指杏花村丫  
这篇文章主要为大家详细介绍了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;
}

运行结果:

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

相关文章

  • OpenCV实现人脸检测功能

    OpenCV实现人脸检测功能

    这篇文章主要为大家详细介绍了OpenCV实现人脸检测功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02
  • Cocos2d-x学习笔记之开发环境搭建

    Cocos2d-x学习笔记之开发环境搭建

    这篇文章主要介绍了Cocos2d-x学习笔记之开发环境搭建,本文使用Visual Studio作为开发IDE,是不同于其它教程的,需要的朋友可以参考下
    2014-09-09
  • 深度理解C语言中的关键字static

    深度理解C语言中的关键字static

    在C语言中static主要定义全局静态变量、定义局部静态变量、定义静态函数,下面这篇文章主要给大家介绍了关于C语言中关键字static的相关资料,需要的朋友可以参考下
    2021-08-08
  • C++ Log日志类轻量级支持格式化输出变量实现代码

    C++ Log日志类轻量级支持格式化输出变量实现代码

    这篇文章主要介绍了C++ Log日志类轻量级支持格式化输出变量实现代码,需要的朋友可以参考下
    2019-04-04
  • 解析设计模式中的Prototype原型模式及在C++中的使用

    解析设计模式中的Prototype原型模式及在C++中的使用

    这篇文章主要介绍了设计模式中的Prototype原型模式及在C++中的使用,需要的朋友可以参考下
    2016-03-03
  • C语言中如何获取函数内成员的值你知道吗

    C语言中如何获取函数内成员的值你知道吗

    这篇文章主要为大家详细介绍了C语言中如何获取函数内成员的值的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • C++11 中的override详解

    C++11 中的override详解

    这篇文章主要介绍了C++11 中的override详解,本文以重写虚函数时,容易犯的四个错误为例,结合示例代码给大家详细介绍,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • C语言实现学生信息管理系统(文件操作)

    C语言实现学生信息管理系统(文件操作)

    这篇文章主要介绍了C语言实现学生信息管理系统,增加了文件操作,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • QT使用QML实现地图绘制虚线的示例代码

    QT使用QML实现地图绘制虚线的示例代码

    QML提供了MapPolyline用于在地图上绘制线段,这篇文章主要为大家详细介绍了QT如何使用QML实现在地图上绘制虚线,需要的小伙伴可以参考一下
    2023-07-07
  • C语言数据结构之算法的时间复杂度

    C语言数据结构之算法的时间复杂度

    这篇文章主要介绍了C语言数据结构之算法的时间复杂度,文章基于c语言的相关资料展开详细介绍,具有一定的参价值,需要的小伙伴可以参考一下
    2022-05-05

最新评论