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

南京建设网站要多少钱淘宝指数查询官网手机版

南京建设网站要多少钱,淘宝指数查询官网手机版,温州微网站制作公司推荐,鲜花网站建设结构布局一、是什么 链表(Linked List)是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的,由一系列结点(链表中每一个元素称为结点)组成 每个结点包括两个部分&…

在这里插入图片描述

一、是什么

链表(Linked List)是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的,由一系列结点(链表中每一个元素称为结点)组成

每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域
在这里插入图片描述
节点用代码表示,则如下:

class Node {constructor(val) {this.val = val;this.next = null;}
}
  • data 表示节点存放的数据
  • next 表示下一个节点指向的内存空间

相比于线性表顺序结构,操作复杂。由于不必须按顺序存储,链表在插入的时候可以达到O(1)的复杂度,比另一种线性表顺序表快得多,但是查找一个节点或者访问特定编号的节点则需要O(n)的时间,而线性表和顺序表相应的时间复杂度分别是O(logn)和O(1)

链表的结构也十分多,常见的有四种形式:

  • 单链表:除了头节点和尾节点,其他节点只包含一个后继指针
  • 循环链表:跟单链表唯一的区别就在于它的尾结点又指回了链表的头结点,首尾相连,形成了一个环
  • 双向链表:每个结点具有两个方向指针,后继指针(next)指向后面的结点,前驱指针(prev)指向前面的结点,其中节点的前驱指针和尾结点的后继指针均指向空地址NULL
  • 双向循环链表:跟双向链表基本一致,不过头节点前驱指针指向尾迹诶单和尾节点的后继指针指向头节点

二、操作

关于链表的操作可以主要分成如下:

  • 遍历
  • 插入
  • 删除

遍历

遍历很好理解,就是根据next指针遍历下去,直到为null,如下:

let current = head
while(current){console.log(current.val)current = current.next
}

插入

向链表中间插入一个元素,可以如下图所示:

在这里插入图片描述
可以看到,插入节点可以分成如下步骤:

  • 存储插入位置的前一个节点
  • 存储插入位置的后一个节点
  • 将插入位置的前一个节点的 next 指向插入节点
  • 将插入节点的 next 指向前面存储的 next 节点

相关代码如下所示:

let current = head
while (current < position){pervious = current;current = current.next;
}
pervious.next = node;
node.next = current;

如果在头节点进行插入操作的时候,会实现previousNode节点为undefined,不适合上述方式

解放方式可以是在头节点前面添加一个虚拟头节点,保证插入行为一致

删除

向链表任意位置删除节点,如下图操作:
在这里插入图片描述
从上图可以看到删除节点的步骤为如下:

  • 获取删除节点的前一个节点
  • 获取删除节点的后一个节点
  • 将前一个节点的 next 指向后一个节点
  • 向删除节点的 next 指向为null

如果想要删除制定的节点,示意代码如下:

while (current != node){pervious = current;current = current.next;nextNode = current.next;
}
pervious.next = nextNode

同样如何希望删除节点处理行为一致,可以在头节点前面添加一个虚拟头节点

三、应用场景

缓存是一种提高数据读取性能的技术,在硬件设计、软件开发中都有着非常广泛的应用,比如常见的CPU缓存、数据库缓存、浏览器缓存等等

当缓存空间被用满时,我们可能会使用LRU最近最好使用策略去清楚,而实现LRU算法的数据结构是链表,思路如下:

维护一个有序单链表,越靠近链表尾部的结点是越早之前访问的。当有一个新的数据被访问时,我们从链表头部开始顺序遍历链表

  • 如果此数据之前已经被缓存在链表中了,我们遍历得到这个数据的对应结点,并将其从原来的位置删除,并插入到链表头部
  • 如果此数据没在缓存链表中
  • 如果此时缓存未满,可直接在链表头部插入新节点存储此数据
  • 如果此时缓存已满,则删除链表尾部节点,再在链表头部插入新节点

由于链表插入删除效率极高,达到O(1)。对于不需要搜索但变动频繁且无法预知数量上限的数据的情况的时候,都可以使用链表

参考文献

  • https://zh.wikipedia.org/zh-hans/%E9%93%BE%E8%A1%A8
  • https://mah93.github.io/2019/07/19/js-linked/

如果对您有所帮助,欢迎您点个关注,我会定时更新技术文档,大家一起讨论学习,一起进步。

在这里插入图片描述

http://www.hkea.cn/news/755691/

相关文章:

  • 想做一个个人网站怎么做培训学校
  • 网站开发ipv6升级如何创建自己的小程序
  • 做网站需要备案吗外贸网站推广与优化
  • 独立网站建设流程b站视频推广网站动漫
  • 泰安诚信的网站建设b站推广入口2023年
  • 高校网站建设资料库东莞seo推广公司
  • 电子印章手机在线制作软件四川seo整站优化费用
  • 个人风采网站制作外贸网站平台哪个好
  • 沈阳企业建站谷歌推广和seo
  • .la域名做的网站如何快速推广app
  • 广州优化网站建设怎么用手机制作网站
  • 做微网站的第三方学网络营销
  • 湖南做网站的公司有哪些搜索引擎是什么
  • flash网站管理系统seo优化排名易下拉用法
  • 永年网站建设友链互换平台推荐
  • 企业网站的设计公司网络广告营销的典型案例
  • 高校思政主题网站建设的意义关键词歌词任然
  • 哪里做网站比较快2345网址导航下载桌面
  • 广州建设委员会官方网站凡科建站下载
  • 全球做网站的公司排名百度一下你就知道官网
  • 小企业网站价格免费发链接的网站
  • 买了空间和域名 怎么做网站哪家公司网站做得好
  • 网站备案是否关闭衡阳网站建设公司
  • 遂昌建设局网站个人怎么做网站
  • 软件开发和网站建设网络营销的未来6个发展趋势
  • 做网站一年多少钱免费seo网站推广
  • 智通人才网东莞最新招聘信息官网seo是如何做优化的
  • 个人做跨境电商网站百度地图导航手机版免费下载
  • 阿里云注册网站之后怎么做网站百度联盟是什么
  • 动画制作视频河南网站排名优化