数据结构基础——链表(学习篇)

数据结构基础——链表


本次总结学习的内容是链表的构造,插入,遍历,删除,反转这些操作,首先学习的是链表的构造、插入、遍历、下面是实现它们的具体函数:
在这里插入图片描述

创建链表

首先是创建一个链表,在创建链表前线创建链表的元素,也就是链表的结点
在这里插入图片描述
data记录结点的数据,next指针用来指向下一结点;_data作为一个常量初始化data。
接下来就是定义链表类
在这里插入图片描述
定义头指针,并在构造函数里初始化让他指向空,然后是析构函数,在析构函数里我们要删除整个链表,思路就是循环遍历每个结点,然后依次删除。current_node不为空,表明链表内还存在内容,在while循环内,让delete_node指向当前结点,当前结点再移动到下一个,最后删除delete_node。
最后只需要在主函数里定义linkedlist的实例。

插入

原理

链表的插入操作的原理,这里的目标就是将结点插入到目标位置上,所需要的参数就是目标节点以及插入的位置。
在这里插入图片描述
链表插入操作的实现方法如下:
1、找到链表中要插入的位置;
2、令待插入节点的next指针指向插入位置的当前结点
3、令插入位置之前当前结点的next指针指向待插入结点
在这里插入图片描述
在对链表进行遍历操作时,我们会从头结点开始通过当前结点的指针找到下一节点直至表尾,并输出所有结点的值。
链表遍历操作的实现方法如下:
在这里插入图片描述
在链表中查询一个元素也是从表头开始向后遍历,找到了目标结点则返回它的位置。

代码实现

首先在类linkedlist最后定义一个插入方法insert,没有返回值,参数为指针变量node,表示要插入的结点,一个是int型的变量index,表示插入结点后,这个结点时第index个结点。
在实现正常插入前,考虑几种特殊情况,一种是头指针为空指针,即链表为空,那么只有在index等于0的时候,才能插入,否则将是一个非法的操作。如果头指针为空且index=0,那么就可以把node赋给head,也就是让node成为头指针,然后return。第二种特殊情况,如果插入结点后的位置是链表首位,及index=0的时候,只要把node插入到head前面即可,让node成为头结点head。
一般情况下,插入元素前,要先找到目标位置的前一个位置,然后将结点插入到链表里,于是,需要定义两个变量,以恶搞是Node类型的指针current_node,用来在链表里遍历,初始指向头指针head,另一个是int类型的变量count,用来统计遍历了多少个结点,初始值为0。
接下来用while循环来找到目标位置的前一个位置,需要满足:current_node的下一个结点不为空,如果为空表示已经到表尾了,count要小于index - 1;加这个限制条件的目的就是避免index远大于链表长度。
在这里插入图片描述
下面是一个对链表创建、插入、遍历操作的复习
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值