链表通过指针将一组零散的内存块串联在一起。其中,我们把内存块称为链表的“结点”。为了将所有的结点串起来,每个链表的结点除了存储数据之外,还需要记录链上的下一个结点的地址。如图所示,我们把这个记录下个结点地址的指针叫作后继指针 next。

从我画的单链表图中,你应该可以发现,其中有两个结点是比较特殊的,它们分别是第一个结点和最后一个结点。我们习惯性地把第一个结点叫作头结点,把最后一个结点叫作尾结点。其中,头结点用来记录链表的基地址。有了它,我们就可以遍历得到整条链表。而尾结点特殊的地方是:指针不是指向下一个结点,而是指向一个空地址 NULL,表示这是链表上最后一个结点。

添加的时间复杂度

在链表尾部添加(addLast())需要从头遍历,时间复杂度为O(n)
在链表头部添加(addFirst()),时间复杂度为O(1)
在链表任意位置添加(add(int index,E e)),平均情况下为O(n/2)=O(n)

总结

  • 在不同的位置添加元素,时间复杂度是不一样的,并不都是O(1),好多文章这里的说法是错的

参考

单向链表基本操作的时间复杂度分析_枣面包的博客-CSDN博客_单链表时间复杂度总结

单链表插入时间复杂度分析相关推荐

  1. [数据结构]顺序单链表插入

    一,单链表插入操作 [cpp] view plaincopy typedef struct NODE { struct NODE *link; int value; }Node; #include & ...

  2. c语言随机生成字母链表,C语言 尾插法建立单链表 插入26个英文字母

    C语言 尾插法建立单链表 插入26个英文字母0 uosnmzer2016.09.13浏览131次分享举报 #include #include #include /* run this program ...

  3. 单链表-插入一个元素为x的节点后,使链表仍然有序

    单链表的存储结构: typedef struct LinkList{int data;LinkList * next;} 分析: 这里和顺序表那题题意是一样的,都是插入一个元素节点x后,使链表仍然有序 ...

  4. 单链表插入、删除操作单步解析(十三)

    1.单链表定义 每个结点包含数据域和指针域,指针域存储下一个结点的地址.  2.插入操作 在第i个结点前面,插入一个e结点. 分析: <1>.s->next = p->next ...

  5. 单链表插入元素 注释 c语言,数据结构之无头单链表的相关练习题——C语言实现(详细注释)...

    本文中所用到的相关链表操作实现均在我上篇博客中:https://blog..net/haoziai905/article/details/87099287 1.删除无头单链表的非尾结点 这道题的重点就 ...

  6. 数据结构单链表插入和删除操作

    单链表:先回顾单链表的特点  逻辑相邻 物理上不一定相连 首先初始化单链表,其中主要保存的是该节点自身的值以及下个节点的地址. 有效节点结构体设计: ​ struct Node{ ​ int data ...

  7. 单链表 插入操作 和 删除操作 的易错点

    单链表中的插入操作: Status ListInsert(LinkList &L,int i,Elemtype e){cout<<"在第"<<i&l ...

  8. 单链表插入、删除和查找操作

    一.链表的定义: 链表是一种物理存储结构上非连续存储结构. 二.节点的表示: 节点(Node)==>数据+补充信息 三.单链表的插入: 1.头插法 2.尾插法 3.任意位置插入 class No ...

  9. Java单链表插入基本操作(头插法、尾插法、任意位置插入法)

    一.单链表的头插法  1.创建一个NODE节点的类,写一个public void addFirst()的函数来实现链表的头部插入,最后写一个public void display()的函数实现链表的打 ...

  10. 单链表的读取,插入与删除

    一:单链表的读取 获得链表第i个数据,算法思路: 1.声明一个指针p指向链表的第一个结点,初始化j从1开始: 2.j<i时,遍历链表,p指针后移,j+1: 3.到链表尾部p为空或者j>i时 ...

最新文章

  1. linux 中mmap的用法
  2. 1个多月就能看到效果的减肥大法 - 生活至上,美容至尚!
  3. hive 行转列和列转行的方法_读离线和实时大数据开发实战,为你揭开 Hive 优化实践的神秘面纱...
  4. java面向对象计算器怎么写_Java对象简单实用案例之计算器实现代码
  5. [转]Displaying standard DataTables in MVC
  6. 485. Max Consecutive Ones - LeetCode
  7. ECharts 常用图表一看即会「散点图」「饼图」「地图」「雷达图」「仪表盘」
  8. OpenCV学习2--图片的加载,修改与保存
  9. Spring boot 的profile功能如何实现多环境配置自动切换
  10. 404为什么是404?
  11. Python单元测试框架——unittest
  12. nginx常见配置详解
  13. 制作jquery插件1-基础
  14. android壁纸路径/目录
  15. 行业精英解答十大游戏关卡设计问题
  16. android之仿朋友圈程序,Android仿微信朋友圈添加图片的实例代码
  17. 计算机网络中处理通信控制功能的是,在计算机网络中处理通信控制功能的计算机是()。A.通信线路B.终端C.主计算机D.通信控制处理机...
  18. redhat7 scl 源_redhat 系使用 scl 工具临时使用高级开发工具
  19. scipy csc csr到底是什么东西
  20. 【Lesson 2】 大调音阶及大调和弦

热门文章

  1. tplink显示网络连接已断开_解决tplink路由器断网的问题
  2. 鼠标悬停图标360度旋转效果
  3. vue去除input在360兼容模式下删除图标
  4. 后缀为 axd 与 ashx 的文件有什么区别
  5. QT+Opencv配置+问题:During startup program exited with code 0xc0000135.
  6. java小球落体问题_小球落体 -- 算法Java
  7. JS 判断元素父子关系
  8. Python导包的几种方法,自定义包的生成以及导入详解
  9. 微信支付对账单的详细说明
  10. python修改文件夹下文件夹的名字