c++双链表的实现及基本操作代码

主要思路

1.创建节点:可采用struct类型,其中包含前指针(指向上一个节点),后指针(指向下一个节点)和所存储的数据。
2.定义一个模板类,类的构造函数中要创建一个空的头指针,该指针不存储数据,(若该改模板的数据类型为int的话)可设数据值为0。
3.编写插入节点的函数。包括头插法和尾插法。
头插法:先创建一个节点类型的指针并申请堆空间创建要插入的节点s,赋值之后,将头指针所指向的节点的后指针所指向节点p的前指针的指向改为s,s的后指针指向p,头节点的后指针再指向s,s的前指针指向头节点。注意,这是在不新创建指针的情况下的指针方向改变的顺序,加粗的地方的顺序不能改变。
尾插法简单一些,但是在插入之前,需要遍历一次链表,设置一个指针变量指向最后一个节点,再进行插入,此时我们只需要将目前的最后一个节点的后指针指向要插入的节点s,s的前指针指向最后一个节点。
4.编写析构函数,由于之前申请了堆空间所以需要重写析构函数
析构函数需要我们从头指针开始,依次释放堆空间,我们可以设置两个指针p和q,p一开始指向头指针,q指向p的后指针所指向的节点,然后删除p所指向的节点,判断q是否为空指针,若不空,p再指向q,q再指向p的后指针所指向的节点,如此循环,直到q为空时,所有节点均删除完毕。
5.链表的其他操作:
查找存储了某数值的节点所在位置、返回第一个节点、返回最后一个节点,在第n个位置插入新节点,删除第n个位置的节点。这些方法的思路与头插法和尾插法类似。
由于目前还未到期末,我的c++代码还未判分,不能上传上来,避免系统说我抄袭,期末之后,一定上传代码供大家参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值