首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

干货送你!编程实用技能:实例教学+源码讲解

收藏了?点个关注有干货哦!数据结构——链表学习编程的过程中,有一个非常重要的知识点——数据结构,但是呢,数据结构这一系列的知识当中有难有易,刚入门的小伙伴不一定能独立学会这一知识,所以,今天小编给大家讲一下数据结构当中比较简单的——双向链表。学习数据结构需要比较好的C语言功底(针对这篇文章来说),特别是指针这一块,因为小编接下来要讲的双向链表,就涉及到了很多指针的操作。

你们最喜欢的环节——实例教学首先呢,学习双向链表,我们得先学会如何去编写链表操作的有关函数,小编一共编写了4个函数:初始化链表、求链表成员个数、插入数据、删除数据。构建链表成员小编使用一个结构体来创建链表成员,这个结构体中有一个数据域、“标记”变量、两个指针,这两个指针分别指向前一个成员和后一个成员,数据域用于存放数据,“标记”变量用来标记当前成员在链表中的位置。

初始化链表这个函数很简单,只用了3行代码就完成了,具体实现步骤看下图

求链表成员个数在这个函数中我们需要申请一个list型的指针traverse,这个指针用于遍历整个表,用while()循环遍历整个表并计算成员个数。

数据插入这个函数稍稍有点复杂,在这里小编就不费时间去优化代码了,大致讲一下这个函数需要注意的地方叫就可以了(只针对于这篇文章),在这个函数中使用最多的就是if判断语句,其次是while()循环,if的嵌套并不多,非常容易理解。

首先,我们先用if语句判断用户插入数据的位置是否合法,如果不合法则退出函数,反之进行下一步操作。接下来我们进入到while()循环中,使用if语句判断插入位置是否位于末尾(末尾的插入操作不同),经过判断,如果插入位置不在末尾,那么我们将一步步将traverse指针移动到我们指定的位置。

插入数据完成之后,我们要重新将该链表进行整理,因为该链表增加了一位新成员,所以它的“标记”变量不许做出改变。小编在这里的思路是,将插入位置后面的所有成员中的“标记”变量加1。

看不懂没关系,文末有学习源码!数据删除数据删除函数相对于数据插入函数较简单,整体与数据插入函数差不多,只不过数据删除函数比数据插入函数少了几个判断语句而已。同样的,在删除数据函数中,我们一个可以遍历整个链表的指针,所以我们依然申请了名为traverse的指针,该指针可以移动到我们删除数据的位置,并进行下一步操作。

删除成员之后,我们要将所有链表成员进行整理排序,简单点将就是将成员中的“标记”变量减1,因为整条链表中少了一个成员,同样的,我们使用while()循环来完成这个操作。

程序测试结果在这篇文章的源码中,小编创建了一个只有一个成员的链表,然后向链表中分别插入2和3,并且这两个数据插入的位置是相同的,这样做是为了检测插入函数是否正常工作。在最后小编使用“求链表成员个数”函数求得整条链表的成员个数,并将打印在屏幕上。

输出结果

调试结果,可查看链表成员

学习源码获取本文一共1461个字,编写教学代码和书写文章一共用了3小时,所以小编在这里提一个小小的要求:只有小编的粉丝才可以获取源码哦!提醒:关注可以成为粉丝

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181006A0V5SC00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券