吉米_王:浅谈链表和顺序表
最近在给班里学生串讲前面学的数据结构知识:
在串讲过程中暴露不少问题,例如:顺序表和链表在操作复杂度方面,出现很多学生不能理解的情况,特别在秘密花园再梳理一下,此篇博文仅送给有缘人:
链表部分:时间关系仅以单向链表为例说明
单向链表也叫单链表,是链表中最简单的一种形式,它的每个节点包含两个域,一个信息域(元素域)和一个链接域。这个链接指向链表中的下一个节点,而最后一个节点的链接域则指向一个空值。
单向链表图示
- 表元素域elem用来存放具体的数据。
- 链接域next用来存放下一个节点的位置(python中的标识)
- 变量p指向链表的头节点(首节点)的位置,从p出发能找到表中的任意节点。
单向链表的插入和删除操作简单分析
- 链表的头部插入数据:
- 链表的尾部插入数据和头部插入数据原理相似,在这里不过分强调;
- 接下来我们来看一下,随机指定位置插入;
- 链表中node节点删除
上面几张图如果大家都能理解,猜测大家已经对链表知识点有一个比较深刻的认知;
顺序表部分:
- 先看顺序表的结构
一个顺序表的完整信息包括两部分,一部分是表中的元素集合,另一部分是为实现正确操作而需记录的信息,即有关表的整体情况的信息,这部分信息主要包括元素存储区的容量和当前表中已有的元素个数两项.
所以在顺序表中,一旦出现删除或者(随机)指定位置添加数据等情况,整个顺序表是需要进行一系列的前移或者后移操作的,当然这个还要结合我们操作的顺序标的具体位置逐一分析;
划重点:接下来我们看一下链表与顺序表的各种操作复杂度对比
操作 | 链表 | 顺序表 |
---|---|---|
访问元素 | O(n) | O(1) |
在头部插入/删除 | O(1) | O(n) |
在尾部插入/删除 | O(n) | O(1) |
在中间插入/删除 | O(n) | O(n) |
注意:以上这些问题的理解需要建立在大家能够对顺序表和链表有一个整理比较完善的理解;
上表中,虽然表面看起来复杂度都是 O(n),但是链表和顺序表在插入和删除时进行的是完全不同的操作。链表的主要耗时操作是遍历查找,删除和插入操作本身的复杂度是O(1)。顺序表查找很快,主要耗时的操作是拷贝覆盖。因为除了目标元素在尾部的特殊情况,顺序表进行插入和删除时需要对操作点之后的所有元素进行前后移位操作,只能通过拷贝和覆盖的方法进行。
补充:
- 首先顺序表在数据读取方面是随机读取的逻辑,所以时间复杂度仅为O(1)。
- 链表失去了顺序表随机读取的优点,同时链表由于增加了结点的指针域,空间开销比较大,但对存储空间的使用要相对灵活。
说明:以上观点仅为个人拙见,写此篇博文的核心目的还是要好好梳理下链表和顺序表的一些具体区别。在加深自己理解和记忆的同时也能分享给众多有心人,实数人生幸事。如果博文中有错误和瑕疵欢迎各位在评论区留言指正,如果您觉得此篇博文为您带来了帮助,欢迎关注、点赞、收藏、转发!!!
吉米_王:浅谈链表和顺序表相关推荐
- python顺序表的实现_数据结构:队列 链表,顺序表和循环顺序表实现(python版)...
链表实现队列: 尾部 添加数据,效率为0(1) 头部 元素的删除和查看,效率也为0(1) 顺序表实现队列: 头部 添加数据,效率为0(n) 尾部 元素的删除和查看,效率也为0(1) 循环顺序表实现队列 ...
- 【C数据结构】单链表的实现以及链表和顺序表的优缺点
文章目录 一.链表和顺序表的相辅相成 二.认识链表的最简单结构(单链表) 1.单链表的结构: 2.单链表的简单操作实现: (1).提前准备(头文件和测试源文件) (2).单链表的头插.尾插与创建一个新 ...
- aes key长度_原创 | 浅谈Shiro反序列化获取Key的几种方式
点击"关注"了解更多信息 关于Apache Shiro反序列化 在shiro≤1.2.4版本,默认使⽤了CookieRememberMeManager,由于AES使用的key泄露, ...
- 华为手机记事本导出_深夜浅谈怎样用一部手机做电影解说?
小编从兴趣而至,到开始做第一部电影解说已经过去半个月了,作品也发布了三部,全程没用过一次电脑,自己之前也没接触过专业的软件,什么PR,AU之类的一概不懂,全程一部手机,只用剪映,今天就给大家分享一下我 ...
- python股票网格交易法详解_干货 | 浅谈网格交易法
原标题:干货 | 浅谈网格交易法 网格交易法的基本原理就是把行情的所有日间上下的波动全部囊括,它不会放过任何一次的行情上下波动. 不管市场价格如何上下波动,不外3种形态:上涨,盘整,下跌.由于不同的操 ...
- sap 双计量单位_[原创]浅谈MM模块的双计量单位(二)
[原创]浅谈MM模块的双计量单位(二) 本博文为隐身人原创作品,请勿转载. 我们继续按照以下的步骤来执行双计量单位的有关流程. 第一步:切换到批次类的"特性"视图,将我们刚才创建的 ...
- 2019天籁按键功能介绍_车主浅谈2019款天籁,2000公里的用车感受!
车主浅谈2019款天籁,2000公里的用车感受! 个人比较偏爱日系车,在选择B级车的时候在凯美瑞.亚洲龙之间徘徊,最后综合对比后选择了天籁.对天籁最满意的地方就是他的舒适性了,天籁的座椅真的让我体验了 ...
- 链表和顺序表的一些区别
顺序表与链表是非常基本的数据结构,它们可以被统称为线性表. 线性表(Linear List)是由 n(n≥0)个数据元素(结点)a[0],a[1],a[2]-,a[n-1] 组成的有限序列. 顺序表和 ...
- 三元组顺序表表示的稀疏矩阵加法_数据结构实验题(三元组顺序表表示的稀疏矩阵转置运算)...
题目描述: 思路: 先用三元顺序表存放稀疏矩阵 typedef struct{ int row, col; int elem;} Elem;typedef struct{ int Row, Col, ...
最新文章
- JavaWeb——c:forEach varStatus=status
- 排序算法——随机快速排序
- 山东大学 2020级数据库系统 实验五
- php 获取 省份缩写,php获取客户端IP,国家,省份,地区,ISP等信息
- 完全卸载sql2005
- C语言嵌入系统编程修炼-性能优化
- 欧阳昌裕:“十三五”暖春 光伏光热产业如何布局?
- vmware esxi 升级 SCSI RAID卡驱动
- python定义变量类型_一、python基础之数据类型与变量
- mysql5.7.11升级_MySQL升级从5.6.18到5.7.11
- category与extension
- 重新认识fprint,sprint
- java jsp网页计算器_使用jsp+javaBean写一个网页计算器
- 容器时代的DevOps部署-普元DevOps
- Mybatis使用map参数查询
- 寒霜朋克计算机丢失,Frostpunk寒霜朋克冰汽时代已停止工作修复补丁(Windows6.1-KB2670838-x64)...
- c语言编写一个找零程序,C语言找零程序求修改
- DeepFM Pytorch实现(Criteo数据集验证)
- 重置帆软决策系统用户名密码
- 【Python】多线程爬取某站高颜值小姐姐照片(共1.62GB)
热门文章
- javascript百炼成仙 第一章 掌握JavaScript基础1.6 叶老
- .py文件图标为白纸以及右键没有Edit with IDLE的解决办法
- hdu 5535 Cake 构造+记忆化搜索
- python数据分析实战:生存分析与电信用户流失预测
- kali内开启键盘背光
- docker开机启动失败_docker安装后启动不了 解决方法
- git push -u origin master提示 fatal: repository 'https://gitlab.com/xx.git/' not found
- 白鹭[egret]项目目录介绍)
- 基于宜搭的《T恤尺码收集》应用搭建最佳实践
- html和js基础功能代码备份