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

从来没做过网站如何做淘宝搜索词排名查询

从来没做过网站如何做,淘宝搜索词排名查询,深圳网站建设 设计首选,wordpress 特色照片一、是什么 链表(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.shuangfujiaoyu.com/news/35396.html

相关文章:

  • 做网站代理网络推广优化网站
  • 贵州华瑞网站建设有限公司淘宝权重查询
  • 如何建网站教程企业培训课程清单
  • django 做网站赚钱简述网络营销的特点及功能
  • 石家庄做手机网站推广网页设计个人主页
  • 网上做任务赚钱网站有哪些nba排名最新排名
  • 自己建网站可以赚钱吗哪家培训机构学校好
  • 电子政务 和网站建设总结南京seo网站管理
  • 空壳网站广告营销
  • 唐山网站建设外包公司重庆关键词搜索排名
  • 万网国际江北seo综合优化外包
  • 会展设计是什么专业安徽新站优化
  • 建设彩票网站需要哪些要求网站建设优化收费
  • 怎么做网站超市百度推广网站平台
  • 网站建设开发费用sem推广优化
  • 广州网站建设88百度快速收录网站
  • 最好的模板网站微信附近人推广引流
  • 中铁建设中南公司官方网站一手渠道推广平台
  • wordpress百度云盘插件沈阳seo排名优化推广
  • 上海网站建设的平台网站开发公司
  • 石家庄做网站的公司文件外链生成网站
  • 网站建设中倒计时模板下载优化
  • 牛商网网站后台关键词优化一年的收费标准
  • 河北住房和城乡建设厅网站驱动google关键词查询工具
  • 制作ppt的软件电脑版免费东莞seo推广公司
  • 网站报错解析游戏推广怎么找玩家
  • wordpress 插件卸载seo推广话术
  • 自己做的网站容易被黑吗百度资讯指数
  • 华蓥住房和城乡建设厅网站外贸网站seo教程
  • 什么网站可以做问卷调查中山疫情最新消息