欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C++ 双向循环链表类模版实例详解

程序员文章站 2024-03-26 14:29:41
在上章c++图解单向链表类模板和iterator迭代器类模版详解我们学习了单链表,所以本章来学习双向循环链表我们在上个文章代码上进行修改, 由于双向循环链表在我们之前学的单链表上相对于较为复杂,所以需...

在上章c++图解单向链表类模板和iterator迭代器类模版详解

我们学习了单链表,所以本章来学习双向循环链表

我们在上个文章代码上进行修改, 由于双向循环链表在我们之前学的单链表上相对于较为复杂,所以需要注意的细节如下所示.

1.插入某个节点流程

如下图所示:

C++ 双向循环链表类模版实例详解

对应代码如下所示:

2.构造函数修改

在构造函数中,需要将头节点的next和prev都指向自己,从而实现一个闭环状态,代码如下所示:

3.重新实现append和prepend函数

因为是个双向循环链表,所以我们很轻松的就能获取到表头节点和表尾节点,代码如下所示:

4.修改迭代器类

由于现在是循环双链表,所以每个节点的next都是有值的,所以我们需要判断m_current当前指标是否等于头节点,如果等于则表示已经到链表末尾了.所以代码如下所示:

由于现在有prev成员,所以需要增加向前遍历函数:

5.linkedlist.h代码如下

6.测试运行

测试代码如下所示:

运行打印:

C++ 双向循环链表类模版实例详解

while循环打印30次,代码如下所示:

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注的更多内容!