数据结构,链表(线性数据结构),队列

二叉树

不论是深度优先还是广度优先,基本上是访问节点一次且仅一次

数据结构

链表

在这里插入图片描述
在这里插入图片描述
链表的这种特性,无法通过索引直接访问节点,但可以快速的删除和插入节点,因为 只需要修改 节点的引用

常见链表(4种):

在这里插入图片描述
在这里插入图片描述
注意
如果添加或删除的是头部节点,都需要重新设置头部节点引用(一般都重新设为修改后的第一个节点)

用一个类来表示一个节点
在这里插入图片描述
value 表示节点的数据
next 表示对后继节点的引用
这里的next也是一个node对象,所以是一个递归的结构

然后设置头节点
在这里插入图片描述
因为Node(上一张图中定义的class)是递归的结构,对于单链表只需要头部节点的引用就可以了

所有的节点查找插入和删除都需要通过头节点来操作

查找节点的代码:
在这里插入图片描述
currentNode和头部进行比对,不一样就生成为下一个节点,一样就退出while循环,一样的这个就是被找到的节点

如果最后currentNode返回了null,则表示访问到了尾部节点,但仍未找到对应的值

指定位置插入的方法:
在这里插入图片描述
两个参数
第一个:指定在哪个节点的后面(这里传的是节点的值,用于上图方法中遍历)
第二个:新节点的值

注意:这里 先创建 新节点的对象 newNode然后找到对应的节点currentNode然后把新节点的next 指向 这个节点的后继节点
把这个节点的后继节点指向新节点,这样新节点就插入指定节点和指定节点的后继节点的中间

在链表尾部追加节点
在这里插入图片描述

头部插入节点:
注意: 头部插入新节点后,一定要重新设置头部节点,把当前对头部节点的引用head指向这个新创建的节点

删除

在这里插入图片描述
保存头部节点head和后继节点previousNode

头的值和下一个不一样,就把头赋值给下一个,下一个再继续和下下个比对

删除头部节点
在这里插入图片描述

循环列表:
在linklist中添加一个tail属性,保存尾部节点,并让尾部节点指向head的节点
在这里插入图片描述

双向循环:
只要把head的pre指向tail即可
在这里插入图片描述

队列

在这里插入图片描述
注意:队列常见的应用场景是基于 事件的处理系统
比如 js的事件循环机制,订单处理系统,邮件处理系统等等,都是基于消息队列实现的
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
等等
https://blog.csdn.net/weixin_52622200/article/details/119765008

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值