当前位置: 首页 > wzjs >正文

龙岗网站制作资讯建设银行征信中心网站

龙岗网站制作资讯,建设银行征信中心网站,重庆餐饮加盟网站建设,深圳设计公司排名深圳市广告公司引言 之前我们学习了单链表这一数据结构,虽然单链表的功能比较多,但是也存在着一些局限性,因为在单链表中节点的指向都是单向的,因此我们想从某个节点找到它的上一个节点比较困难,来不及再迷恋单链表了,接…

引言

之前我们学习了单链表这一数据结构,虽然单链表的功能比较多,但是也存在着一些局限性,因为在单链表中节点的指向都是单向的,因此我们想从某个节点找到它的上一个节点比较困难,来不及再迷恋单链表了,接下来登场的是更加方便的双向链表

双向链表

旧知引入 :

双向链表跟我们前面学习的单链表相比,只是多了一个指针域,因此大家完全可以拿着之前学习单链表的逻辑来带入双向链表的学习。

双向链表的形式:

在这里插入图片描述

代码实现:

在这里插入图片描述

双向链表各项功能的实现

一:申请节点

由于我们实现的双向链表要有一个哨兵位,并且之后的插入数据也需要申请节点,因此这里先实现申请节点的函数。
在这里插入图片描述

二:初始化

1. 声明 :

在这里插入图片描述
注意这里的初始化可以写成传参或者不传参两种形式,这里我们可以两个都实现一下。

2. 逻辑实现:
实现方式1 – 传参数 :

在这里插入图片描述
注意这里由于需要改变传入的一级指针的指向,因此这里的函数参数是二级指针来接收一级指针的地址。

实现方式2 – 不传参数

在这里插入图片描述

3. 测试:

在这里插入图片描述
可以看到初始化函数没有问题。

三:打印

1. 逻辑分析:

既然要打印链表就不可避免的要遍历链表,之前我们的单链表是根据最后一个节点的next指针为空的性质来进行遍历的,但由于双向链表最后一个节点的next指针并不为空,因此就需要根据双向链表的性质来写,由于我们实现的双向链表存在一个哨兵位,因为哨兵位只是占位置,并不存储有效数据,因此我们可以定义一个指针从第一个节点开始,只要没有走到哨兵位就一直遍历。

2. 声明:

在这里插入图片描述

3. 代码实现:

在这里插入图片描述
注:打印函数的正确性放到后面检验。

四:查找

1.逻辑分析:

既然要查找,就不可避免地要遍历链表,因此这里的实现方式和打印函数基本上一样,并且这里的返回值是节点的地址

2. 声明:

在这里插入图片描述

3.代码实现:

在这里插入图片描述
注:查找函数的正确性也是放到后面检验。

五: 尾插

1. 逻辑分析:

在这里插入图片描述

2.声明:

在这里插入图片描述

3. 代码实现:

在这里插入图片描述

4. 测试:

在这里插入图片描述
这里我们每调用一次尾插函数就打印一次链表,可以看到没有问题。

六:头插

1. 逻辑分析:

注:这里提前说明我们的头插是在第一个节点的前面,因为哨兵位并不是有效节点
在这里插入图片描述

2. 声明:

在这里插入图片描述

3. 代码实现:

在这里插入图片描述

4.测试:

在这里插入图片描述
通过测试可以看到不存在问题。

七:在POS位置之后插入数据

1. 逻辑分析:

在这里插入图片描述

2. 声明:

由于是在POS位置之后插入数据,不需要知道哨兵位的位置也能做到,所以这里需要传入POS位置的地址。
在这里插入图片描述

3. 代码实现:

在这里插入图片描述

4. 测试:

在这里插入图片描述
这里我们通过查找函数来找到对应节点的地址,然后每插入一次就打印一次。

八:删除POS位置的节点

1. 逻辑分析:

在这里插入图片描述

2. 声明:

在这里插入图片描述

3. 代码实现:

在这里插入图片描述

4. 测试:

在这里插入图片描述

九:头删

1. 逻辑分析:

注:既然要执行删除操作,那么你的链表里得有节点才行啊,因此这里还需要先判空

判空

在这里插入图片描述
在这里插入图片描述

2. 声明:

在这里插入图片描述

3. 代码实现:

在这里插入图片描述

4. 测试:

在这里插入图片描述

十:尾删函数

1. 逻辑分析:

在这里插入图片描述

2. 声明:

在这里插入图片描述

3.代码实现:

在这里插入图片描述

4. 测试:

在这里插入图片描述

十一:销毁

1. 逻辑分析:

所谓的销毁函数,其实就是把我们向内存申请的空间都归还回去,这样的话还是要遍历链表,和单链表销毁函数逻辑没什么区别。

2. 声明:

在这里插入图片描述

3. 代码实现:

在这里插入图片描述
注:这里我们传入的是一级指针,并不会改变哨兵位,因此哨兵位要手动释放。

4. 测试:

在这里插入图片描述
在这里插入图片描述
可以看到将哨兵位在内的节点都释放掉了。

总结:

通过上述介绍,想必同学们已经对双向链表有了一个较为清晰的认识,和单链表相比,双向链表在各种操作上确实比单链表要优秀不少,但也不代表单链表就一无是处,所有的数据结构都是存在即合理,所以我们都要掌握。

那么下次我们来学习另外一个数据结构–

http://www.dtcms.com/wzjs/840232.html

相关文章:

  • 永久免费ppt下载网站长春网站设计哪家好
  • 网站安全建设需求分析报告海外贸易平台
  • 深圳网站如何制作网站开发如可使用支付宝
  • 高中生自己做网站wordpress实用的插件
  • 网站建设成本预测表织梦技术个人网站模板下载
  • 中山网站建设乐云seo模板中心专利申请
  • 嘉兴seo网站排名国家建筑网官网
  • 网站开发协议短视频营销的优势有哪些
  • 秦皇岛市 网站建设pc网站建设
  • 外贸商城网站制作公司莱芜雪野湖别墅
  • 东莞广告公司有哪些网站建设优化开发公司排名
  • 开发一个网站多少钱?广州优化网站
  • 传统网站模版网页制作的基本步骤流程
  • wordpress区块链导航类网站大连手机自适应网站建设
  • 网站优化预算武进网站建设多少钱
  • 做网站的管理员咋找wordpress文章excerpt字数
  • 网站登录设计欣赏申请做网站编辑组长的工作设想
  • 做设计及免费素材网站有哪些wordpress手机悬浮
  • 收费用的网站怎么做wordpress 课程系统
  • 企业网站能自己建设吗佛山市seo网站设计工具
  • 丝路建设网站网站怎么看好与不好
  • 阿里去可以做几个网站网络商城的推广方法
  • 电商网站上信息资源的特点包括建网站服务器
  • 微信做网站的公司做网站在手机端预览乱码了
  • 深圳营销型网站建设免费wordpress还是shpify
  • 有什么好用的模拟建站软件百度的广告
  • 北京怎样做企业网站山东网站app制作
  • 电话销售做网站犯法吗个人网页设计作品下载
  • 做外贸网站需要请外贸文员吗投资公司收到分红要交什么税
  • 谈谈你对网站开发的理解微网站建设及微信推广方案ppt模板