zoukankan      html  css  js  c++  java
  • [转]浅析线性表(链表)的头插法和尾插法的区别及优缺点

    浅析线性表(链表)的头插法和尾插法的区别及优缺点

    线性表作为数据结构中比较重要的一种,具有操作效率高、内存利用率高、结构简单、使用方便等特点,今天我们一起交流一下单向线性表的头插法和尾插法的区别及优缺点

    线性表因为每个元素都包含一个指向下一元素的指针,所以新增、删除、修改起来非常简单迅速

    就像火车一样,一节一节的,想增加就加上一节就成,非常方便

    那么在插入的时候却有两种方法,头插和尾插

    顾名思义,头插就是将新元素插在链表头部,尾插就是将新元素插在链表尾部

    个人总结,他们的区别在于,如果是头插法的话,那么新元素直接作为头结点,next指针指向旧的头结点即可,非常方便迅速效率高。如果是尾插法的话,添加新元素时需要遍历旧链表,直到某个节点的next指针为空,说明这个节点是尾节点,修改这个尾节点的next指针为新添加的元素即可

    综上所述,可以看出他们的区别,也就是优缺点

    头插法:

    • 插入速度快(不需要遍历旧链表)
    • 头结点每次插入都会变化,头结点永远是最新的元素
    • 遍历时是按照插入相反的顺序进行
    • 由于头结点不断在变化,所以需要额外的维护头结点的引用,否则找不到头结点,链表就废了

    尾插法:

    • 插入速度慢(需要遍历旧链表到最后一个元素)
    • 头结点永远固定不变
    • 遍历时是按照插入相同的顺序进行

    另外除此之外,也有人从业务角度讨论过两种的区别

    现在很多网站或者系统都有一个“最近使用”之类的功能,这种可以考虑用头插法实现

    当你使用一个功能的时候,就使用头插法插入一个,查看最近使用的时候直接遍历线性表,即可得到按照最近使用排好序的内容

  • 相关阅读:
    【天梯 L2-008 最长对称子串 】 最长回文子串 manacher
    【天梯L2-001 城市间紧急救援】 双关键字最短路+记录路径 堆优化Dijkstra
    记录板

    留言板
    使用 Docker 搭建 Java Web 运行环境(转)
    数据库隔离级别和锁
    线程上下文类加载
    tomcat是怎么找到项目lib目录下的jar包的,求大神解答
    Java中try、finally语句中有return时的执行情况 [转]
  • 原文地址:https://www.cnblogs.com/zhuozige/p/15434203.html
Copyright © 2011-2022 走看看