当前位置: 首页 > 编程笔记 >

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

壤驷德宇
2023-03-14
本文向大家介绍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;
}

运行结果:

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

 类似资料:
  • 在试图理解如何在C#中实现单个列表时,我遇到了下面的链接: 创建一个非常简单的链表。 然而,由于我是C#的新手,我被上面讨论的第一部分中列出的语法弄糊涂了。正在声明一个名为节点的类,并且在声明为“公共节点下一个”的类中还有另一个语句。这个语句称为构造函数吗?请帮忙。

  • 我已经用C#实现了单链表。任何人都可以查看下面的代码并指出我的错误所在吗? 此函数不删除最后一个节点。我不知道出了什么问题。当while循环结束时,curNode中的node引用的next为null。这意味着这是最后一个节点。最后,我将此节点设置为null。但当我使用显示功能时。它还显示最后一个节点。这不是删除最后一个节点。 这里是我的显示功能:

  • 本文向大家介绍C语言实现单链表实现方法,包括了C语言实现单链表实现方法的使用技巧和注意事项,需要的朋友参考一下 C语言实现单链表实现方法 链表和我们之前实现过的顺序表一样,都是简单的数据结构,链表分为单向链表、双向链表、循环链表。而单向链表又分为两种实现方法,一种为带头节点的单链表,一种为不带头节点的单链表。我们来具体看看不带头节点的单链表的实现 单链表:它是一种链式存储的线性表,用一组地址任意的

  • 本文向大家介绍C语言单链表的实现,包括了C语言单链表的实现的使用技巧和注意事项,需要的朋友参考一下 单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。 链表结构: SList.h SList.cpp Test.cpp 以上内容是小编给大家介绍的C语言单链表的实现代码,希望对大家有所帮助!

  • 本文向大家介绍C语言实现单链表反转,包括了C语言实现单链表反转的使用技巧和注意事项,需要的朋友参考一下 一、理解指针 看懂链表的结构并不是很难,但是一旦把它和指针混在一起,就很容易让人摸不着头脑。所以,要想写对链表代码,首先就要理解好指针。   有些语言有“指针”的概念,比如 C 语言;有些语言没有指针,取而代之的是“引用”,比如 Java、Python。不管是“指针”还是“引用”,实际上,它们的

  • 本文向大家介绍C++ 实现静态链表的简单实例,包括了C++ 实现静态链表的简单实例的使用技巧和注意事项,需要的朋友参考一下 C++ 实现静态链表的简单实例 用数组描述的链表,即称为静态链表。 在C语言中,静态链表的表现形式即为结构体数组,结构体变量包括数据域data和游标cur。 这种存储结构,仍需要预先分配一个较大的空间,但在作为线性表的插入和删除操作时不需移动元素,仅需修改指针,故仍具有链式存

  • 模板方法模式提供了抽象基类具有不可重写的方法:该方法实现了通用算法,不应在子类中重写。在Java中,模板方法在抽象基类中声明为final,在C中,sealed关键字具有类似的含义,但不能声明未重写的方法。 我如何解决这个问题?为什么不能阻止一个方法可以被子类重写(在C中)?

  • C语言面向对象编程(五):单链表实现 前面我们介绍了如何在 C 语言中引入面向对象语言的一些特性来进行面向对象编程,从本篇开始,我们使用前面提到的技巧,陆续实现几个例子,最后呢,会提供一个基本的 http server 实现(使用 libevent )。在这篇文章里,我们实现一个通用的数据结构:单链表。 这里实现的单链表,可以存储任意数据类型,支持增、删、改、查找、插入等基本操作。(本文提供的是完