list容器模拟实现(一)—— push_back添加数据

本文详细介绍了如何在C++中自定义一个双链表数据结构,包括构建结点、连接结点以及尾部插入数据的操作。通过结构体模板定义结点,利用类模板创建双链表,并提供了测试代码展示其实现过程。

list容器不像之前的string、vector,不属于顺序存储的容器,是经由链表实现的,而且还是双链表


目录

一、准备工作:构建结点+连接节点

1、构建结点

2、连接结点

 二、尾插添加数据


一、准备工作:构建结点+连接节点

为了实现双链表,我们需要先通过结构体表示出每一个结点,然后使用类来连接这些结点

为了和原生的list区分开,我们把自定义的list放在自定义命名空间xing中

1、构建结点

每一个结点的数据类型是不确定的,所以这里加入了模板

定义结构体模板或者类模板时,无需加 <T>,除此之外,使用结构体模板或者类模板都需要加 <T>,因为类模板不会自动推导数据类型

C++中的结构体和类一样,在创建结构体对象的时候,会调用构造函数,方便我们在创建对象的时候就给_data赋值,赋予缺省值的目的是,创建哨兵位结点时,不会放入数据

namespace xing
{
	template<class T>              
	struct ListNode                //定义一个结构体模板
	{
		T _data;                   //每个结点中保存的数据
		ListNode<T>* _next;        //下一个结点的地址
		ListNode<T>* _prev;        //上一个结点的地址

        ListNode(const T& data = T())    //方便下面在构建结点的时候就直接初始化
                 :_data(data),
                  _next(nullptr),
                  _prev(nul
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值