这不仅仅是一个单链表,C++的模板化单链表,附带内置迭代器实现

链表是可以存储无限数量项的数据结构。使用指针以顺序方式连接这些数据。虽说C语言实现的大家都应该非常熟悉了。今天用C++的模板化单链表,附带内置迭代器的简单实现。

链表有两种类型; 单链表和双链表。在单链表中,每个元素都包含一些数据和指向下一个元素的链接。另一方面,双向链表中的每个节点都包含一些数据,到下一个节点的链接和到前一个节点的链接。链表的元素称为节点。节点有两个字段,即data和next。数据字段包含存储在该特定节点中的数据。它不能只是一个变量。可能存在许多变量呈现节点的数据部分。在接下来的字段包含下一个节点的地址。所以这是建立节点之间链接的地方。

无论链表中存在多少个节点,第一个节点称为listHeadNode,最后一个节点称为listTailNode。如果只创建了一个节点,那么它将被称为listHeadNode和listTailNode。

使用C ++实现链表

由于链表由节点组成,我们需要声明一个定义单个节点的结构。我们的结构应该至少有一个用于数据部分的变量和一个用于下一个节点的指针。在C ++中,我们的代码如下所示:

C++与C的区别

  1. 定义自定义类型不需要 struct 关键字。
  2. C++结构体中允许成员函数存在以及构造函数。
  3. C++相同函数名允许存在,前提是参数类型不同。即C++函数重载思想。

使用C ++创建链表

现在,我们需要一个包含处理节点的函数的类。这个类应该有两个重要的指针,即头部和尾部。构造函数将使它们为NULL以避免任何垃圾值。以及万金油成员size成员。

现在,我们将为节点创建编写一个函数。创建节点的过程非常简单。我们需要一个节点类型的指针(我们定义),我们将在其数据字段中插入值。节点的下一个字段将被声明为NULL,因为它将是链接列表的最后一个节点。

\

关于怎么快速学C/C++,可以加下小编的C/C++学习群:341+636+727,不管你是小白还是大牛,小编我都欢迎,不定期分享干货,欢迎初学和进阶中的小伙伴。

每天晚上20:00都会开直播给大家分享C/C++游戏编程学习知识和路线方法,群里会不定期更新最新的教程和学习方法,最后祝所有程序员都能够走上人生巅峰,让代码将梦想照进现实

现在,该函数将有一个非常特殊的情况,我们想知道如果链表仍然为空会发生什么?我们必须检查它。你还记得头指向第一个节点吗?这意味着如果头部等于NULL,那么我们可以断定链表是空的。

我之前也告诉过你,如果在链表中只有一个节点(我们要创建),那么它被称为listHeadNode和listTailNode。

如果已经创建了链接列表,那么我们将在链接列表的末尾插入此节点。我们知道最后一个节点叫做尾部。因此,我们将在尾节点旁边创建这个新创建的节点。

在链表末尾创建新节点有两个步骤:

  1. 将新创建的节点与尾节点链接。意味着将新节点的地址传递给尾节点的下一个指针。
  2. 尾指针应始终指向最后一个节点。所以我们将使尾指针等于一个新节点。

用于链表各部分功能 C ++代码是这样的

push_back和push_front都放到list 类中的public属性下。

1.表尾插入

2.表头插入

3.打印数据

STL 迭代器实现

1.list类中添加一个iterator,即类中类

1.1 iterator 构成

1.2 C++重载运算符,实现迭代器赋值,打印数据,比较,以及自增

2.新增两个成员函数,初始化迭代器

主函数测试

我为你做了一个链表的完整项目。它执行上述所有功能。如果您有任何疑问,可以在评论中提问我

猜你喜欢

转载自blog.csdn.net/chengxuyuan997/article/details/81503792