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

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

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

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

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

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

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

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

头插法:

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

尾插法:

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

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

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

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

头插法和尾插法的详细区别相关推荐

  1. C语言的双向链表头插法和尾插法,指定节点删除

    文章目录 前言 头插法 尾插法 删除节点 测试代码如下 前言 双向链表和单链表的唯一区别就是多个一个指针域而已,该指针域可以访问链表的上一个节点. 关于构造双向链表的过程我们常见的有两种方法,和单链表 ...

  2. c语言 链表建立头插法尾插法,单链表的创建(头插法和尾插法)

    单链表的创建分为头插法和尾插法,头插法是不断地向头结点插入新的结点.这样会使你所插入的结点值呈现逆序,所以头插法也可以实现单链表的逆置.尾插法是不断地向插入的新元素之后再插入新的元素.需要注意的是头插 ...

  3. 计算机软件技术 上海电力学院,上海电力学院 计算机软件技术 实验三 用头插法和尾插法创建线性表...

    上海电力学院计算机软件技术实验三用头插法和尾插法创建线性表 #include #define MAXLEN 9 struct table {int key; int othererm; } ; typ ...

  4. 数据结构学习(二)——单链表的操作之头插法和尾插法创建链表

    http://blog.csdn.net/abclixu123/article/details/8210109 链表也是线性表的一种,与顺序表不同的是,它在内存中不是连续存放的.在C语言中,链表是通过 ...

  5. 头插法和尾插法创建链表(有无头结点)

    头插法和尾插法创建链表(有无头结点) 文章目录 头插法和尾插法创建链表(有无头结点) 1 头插法 1.1头插法建表规则: 1.2 头插法建表代码实现 2 尾插法 2.1 尾插法建表规则: 2.2 尾插 ...

  6. 单链表的头插法和尾插法c语言实现

    /*单链表的头插法和尾插法c语言实现*/ #include <stdio.h> #include <stdlib.h> #include <string.h> #d ...

  7. 采用头插法和尾插法建立单链表

    面说一下如果用C语言建立单链表,分为头插法和尾插法两种. 采用头插法建立单链表 该方法从一个空表开始,生成新结点,并将读取到的数据存放到新结点的数据域中,然后将新结点插入到当前链表的表头,即头结点之后 ...

  8. 双向循环链表的头插法和尾插法

    我们平常学链表的时候会学单向不循环链表,单向循环链表,双向不循环链表,双向循环链表及内核链表,各种格式的链表.今天我因为忘记双向循环链表的头插法和尾插法的顺序了,特意写一篇文章来巩固一下.首先我根据顺 ...

  9. 头插法和尾插法建立带头节点的单链表

    有两种方法建立单链表,尾插法和头插法,他们的区别是:头插法是按照输入元素倒序建立,为尾插法为顺序插入,并且多一个尾节点,我们一般使用尾插法. 一.头插法 代码为: pCurr -> next = ...

最新文章

  1. 《程序员代码面试指南》第二章 链表问题 在单链表和双链表中删除倒数第K个节点...
  2. “当前上下文中不存在名称”解决
  3. dubbo下使用selectKey获取自增主键为0问题
  4. JS实现表格Table动态添加删除行
  5. springMVC详解以及注解说明
  6. 12306能删候补订单记录_12306候补购票功能在哪里怎么用 火车票候补购票使用攻略...
  7. java c 客户端_java基于C/S模式实现聊天程序(客户端)
  8. 对内存重叠的深入认识
  9. jpa-spring -basic
  10. 服务器控件在客户端触发alert对话框后,根据情况进行回发服务器操作
  11. Android 10 vs iOS 13,逐鹿手机操作系统之王!
  12. mybatis整合spring,使用org.mybatis.spring.mapper.MapperScannerConfigurer扫描出现问题
  13. Cesium笔记之加载GIF图
  14. 关于电的计算机公式,电功率计算公式大全
  15. 阿里云域名怎么注册和使用(新手教程)
  16. ffmpeg v4l2集成分析
  17. 计算机网络 5 - 链路层
  18. 步进电机--S 曲线的C算法
  19. dann的alpha torch_pytorch BiLSTM+CRF代码详解
  20. 《计算机组成与系统结构(第二版) 裘雪红 李伯成 西安电子科技大学出版社》课后习题答案(带解析)(六)

热门文章

  1. 单向流动的拓扑结构_单向流与乱流净化工程原理是什么-百度经验
  2. Java 第十一届 蓝桥杯 省模拟赛 小明植树(DFS)
  3. linux之调试mipi液晶屏
  4. 国家网络安全宣传周开幕 志翔科技护航核心数据与业务安全
  5. 程序史简史:从巴贝奇到爱达在到图灵
  6. Tita OKR分享:如何用OKR开周会?
  7. AI艺术简史·未来已来,只是分布不均而已…… [ 元宇宙创作者指南 ]
  8. 【论文解读|2019】HAHE - Hierarchical Atentive Heterogeneous Information Network Embedding
  9. Nvidia TX2+rplidar+autolabor pro1实现自主导航机器人
  10. 金属表面酸洗废水除锰除铬过滤装置,除铬树脂