范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

链表,画几下就整明白了!

  大家好呀,我是帅蛋。
  数组 的文章中给大家伙儿说过,连续的内存使得数组在进行插入和删除时需要移动大量元素,这就意味着要耗费时间。
  在数据结构与算法中,快男才是大家的最爱,像插入和删除这么持久的蓝孩子显然不受待见。
  后来,大家就想方设法帮助它们变快。
  那么有没有这么一种数据结构可以达成这一目的呢?
  链表就这么被整出来了。
  相比于数组,链表是稍微复杂一些的数据结构,但是不难,只要跟着本蛋就能学会。
  文章导读链表
  首先什么是链表?
  线性表的链式存储结构生成的表,叫做链表。
  那么什么是链式存储结构咧?
  链式存储结构是指 用一组任意的存储单元存储线性表的数据元素,通过指针连接串联起来。
  这里的"任意"指的就是, 存储单元可以连续也可以不连续, 这就意味着 它们可以是内存中任何未被占用的地方。 有味儿点讲就是只要内存这个厕所里空着的茅坑,你就随便蹲。
  链表中的存储单元叫做 节点 。它和数组中只存数据信息不同,每个节点分为两部分: 数据域和指针域 。数据域存储的数据,指针域存储着同一个表里下一个节点的位置。
  因为链表家族里的兄弟姐妹太多,在这里咧我只讲常见的几种链表结构:单链表、双向链表。
  毕竟再多,我写的就累死了… 单链表
  n 个节点可以链接成一个链表,如果 链表中的每个节点只包含一个指针域,这个链表就叫做单链表。
  单链表的指针域指向的是下一个节点的地址,我们把指向下个节点地址的指针叫做 后继指针 。
  单链表的第一个节点的存储位置叫做 头指针 , 最后一个节点的后继指针为空 ,一般用 NULL 或者 "^" 表示。
  除了上面的,有时候为了操作方便,会在单链表的第一个节点前面加一个节点,称之为 头节点 。这个头节点一般不存储任何内容,它的指针域指向单链表的第一个节点。
  臭宝:停停停!又是头指针又是头节点的,有点懵…
  帅蛋:莫慌,有我。
  头指针与头节点的区别
  头指针 ,顾名思义,是指向链表第一个结点的指针,如果有头结点的话,那么就是指向头结点的指针。
  它是链表的必备元素且无论链表是否为空,头指针都不能为空 ,因为在访问链表的时候你总得知道它在什么位置,这样才能通过它的指针域找到下一个结点的位置,也就是说知道了头指针,整个链表的元素我们都是可以访问的。
  所以头指针必须要存在,这也就是我们常说的 标识 ,这也就是为什么我们一般用头指针来表示链表。
  头结点 ,是放在第一个元素的节点之前,它的数据域一般没有意义,并且它本身也不是链表必须要带的。
  它的设立是单纯是为了操作的统一和方便 ,其实就是为了在某些时候可以更方便的对链表进行操作,有了头结点,我们在对第一个元素前插入或者删除结点的时候,它的操作与其它结点的操作就统一了。
  除此以外,还有一种啥也没有,空空空空~ 空链表 。
  不知道大家发现了没,不管是带头节点,还是不带头节点,或者是空的链表,它们都是有头指针的,这正印证了我在上面提到过的" 头指针是链表的必备元素,无论链表是否为空,头指针都不能为空 "。
  别说话,夸我~
  单链表的操作
  和数组一样,单链表也有查找、插入和删除等操作。因为链表的存储空间是不连续的,所以链表的插入和删除操作是很快速的。
  1、插入操作
  假设我们要完成一个插入操作:在节点 p 后面插入节点 s。
  正确的做法是,只需要将节点 s 插入到节点 p 和节点 p.next 之间就可以,说起来很简单,具体操作请看下图。
  从上图中可以看出,单链表的插入其实根本不需要惊动其它的节点,只需要让 s.next 的指针和 p.next 的指针稍作改变。 让节点 s 的后继指针指向 p 的后继节点,然后 p 的后继指针指向节点 s,这里切记,插入操作的顺序一定不能改变。
  可以看出插入操作的时间复杂度是 O(1)。
  2、删除操作
  假设我们要完成一个删除操作:删除节点 p 的后继节点 q。
  其实也简单,就是将 p 的后继指针绕过 q,直接指向 q 的后继节点即可,具体操作如下图。
  由上图看出,同样只需要一步就可以实现删除操作,直接让 p.next 指向 q.next 即可,所以删除操作的时间复杂度为 O(1)。
  3、查找操作
  当然啦,有快的地方就有慢的地方,元素的查找就是链表美中不足的地方。
  数组在内存中排排坐不同,链表的在内存中的地址是分散的,只能通过前一个节点的 next 才知道当前节点的位置,所以在链表中想要找第 i 个元素,只能傻傻的从头开始找,直到找到第 i 个元素位置。
  从这可以看出,链表中查找操作的时间复杂度是 O(n)。
  单链表实际应用场景
  单链表说了这么多也差不多了,辣么有个问题,我学了这个玩意能用在哪呢?
  easy!
  单链表的应用的话一般能用在  2 种场景 下:
  (1) 第 1 种基操。 在你应用的场景中,插入和删除的操作特别多,你不想因为这俩操作浪费你太多的时间,此时用单链表,可以改善插入和删除操作浪费的时间。
  (2) 第 2 种骚操。在你应用的场景种,不知道有多少个元素,那这个时候你用单链表,每来一个新的元素你就链在表里,这种情况是用链表处理的绝佳方式。也是很容易被大家忽略的。
  双向链表
  双向链表 ,顾名思义,两个方向向的链表。 相比起单链表来说,它多了一个前驱指针 prev,指向前驱节点。 这样双向链表既可以往前走,也可以往后走。
  从上面两张图看,双向链表多了一个前驱指针,使得在内存上比单链表占用更多的空间,但是 双向链表在查询链表元素的时候会更加方便 ,比如可以在 O(1) 的时间内超找到当前节点的前驱节点,这是典型的用空间换时间。
  空间换时间 ,在内存够用的情况下,为了追求更快的执行速度,选择空间复杂度较高,时间复杂度较低的数据结构或者算法。
  既然用了时间换空间,那双向链表比单链表快在哪个地方呢?那这个还是从插入、删除操作说起。
  可能在这臭宝们拿起键盘会说,单链表的插入和删除都已经是 O(1) 了,还要怎么快?
  其实准确点来说, 插入和删除是 O(1),更多的是针对插入或删除这单个动作来说的,在实际情况下,一切都有前置条件。 在某些前置条件下的实际应用场景,双向链表比单链表更快。
  下面开始表演。
  插入操作优势
  插入操作,无非就是 2 种情况: 在 "data域等于某个特定值"的节点前或者后插入一个新的节点。 在给定的节点前或者后插入一个新的节点。
  针对第 1 种,这俩时间复杂度都差不多。都是分两个步骤:
  第一步找到 data 域等于某个特定值的节点,无论单链表还是双向链表都需要从头开始一个一个的遍历,这一步的时间复杂度都是 O(n)。
  第二步就是插入操作。如果都是向后插入的话,那时间复杂度都是 O(1),如果是向前插入的话,那单链表慢一些,它需要再重新找到特定值节点的前驱节点,这个时间又花费 O(n),而双向链表不用,因为它有前驱节点,直接就能找到特定值节点的前驱节点,这个时间花费的是 O(1) 。
  针对第 2 种情况,其实他就是第 1 种情况中的第二步,已经找到了要插入的节点,如果都是向后插入的话,单链表和双链表的时间复杂度都一样,都是 O(1)。差别就差向前插入,向前插入的话就需要知道当前节点的前驱节点,单链表需要重新遍历到当前节点的前驱节点,总的时间复杂度是 O(n),而双向链表一下子就能找到它的前驱节点,时间复杂度是 O(1)。
  这就是双向链表优势于单链表的地方。
  删除操作优势
  删除操作,和插入操作差不多,也基本上是 2 种情况: 删除 "data域等于某个特定值"的节点。 删除给定的节点。
  第 1 种情况就不说了,单链表和双向链表都一样,都是从头开始一个个的遍历,时间复杂度都是 O(n)。
  第 2 种情况,删除给定的节点,这就要求需要知道这个节点的前驱节点。单链表需要从头开始找,直到"node.next = 当前节点"的适合,才是找到了当前节点的前驱节点 node,这个过程的时间复杂度是 O(n)。而双向链表直接就知道它的前驱节点,只需要时间复杂度是 O(1) 就可以搞定。
  常见的链表到这就讲完啦,当然在这基础上衍生出来的像循环链表、循环双向链表都还没说,一次整太多怕你们消化不良。
  链表这东西呢,不要怕,虽然看起来有些复杂,但其实就那几板斧,学链表的时候多在纸上画画,各种关系无所遁形,啥都就整明白了,不信你试试。
  当然啦,能看到这的都是真爱, 麻烦动动小手帮我点个赞呀 ~
  我是帅蛋,我们下次见!

我闻到了冬天的气息昨天室外最高温35度,今天就直线降到29度。清晨我推开大门,放下门外竹帘子的那一刻,我好像闻到一股冬天的气息,干爽的风中带着一丝凉凉的寒意。再怎么说,国庆节已经过去大半了,天气再不缓解冬天手脚冰凉的十一个养生方法进入秋冬季节,常会听到女性博友说我的脚总是冷冰冰的。手脚冰凉的原因是什么?会有哪些危害?应该怎样改善手脚冰凉的情况?如果是疾病原因引起的,自然需要先治疗疾病。对于非疾病原因的手脚冰2022河南冬天冷不冷?河南冬天有零下吗?河南冬天一般零下几度?河南作为著名的旅游城市,每年去该处游玩的友友都不在少数,但由于河南是北方地区,温度更低一些,所以2022河南冬天冷不冷成了很多人都有的疑问,下面小编就和大家一起看看河南冬天一般零下毛主席病逝前吃了7两燕窝,管家吴连登谈到他家仓库就让人直哭如果您喜欢这篇作品,欢迎点击右上方关注。感谢您的鼓励与支持,希望能给您带来舒适的阅读体验。1975年,随着年纪的增加,毛主席的身体状况也越发恶劣,各种疾病缠身,以至于到了无法下床和万沙浪春晚爆红意外成残障,被妻儿抛弃,今与情人共度余生在阅读此文之前,麻烦您点击一下关注,既方便您进行讨论和分享,又能给您带来不一样的参与感,感谢您的支持!当代中国对小三,情人一类干预别人婚姻的角色是容忍不了,也非常痛恨。这类角色在日历代皇后及嫔妃(上古至周)嫔妃,是指君主的妾室。经过正式的册封后,会拥有不同等级的位号与待遇。在中国古代一夫一妻多妾制婚姻影响下,君主通常会拥有一位皇后和数量不等的妃嫔,妃嫔可从数人至千人不等,各个时期嫔妃大汉奸后代今何在大多赴美,有一汉奸的孙女是日本首位华裔大臣汉奸这个词,在中国人的眼中,可要比日本人还要令人痛恨,在抗日战争期间出现了很多令人痛恨的汉奸,他们贪生怕死,为了保命和荣华富贵,竟然出卖自己的同胞和祖国,甘愿去当日本人的走狗。在我日本昭和天皇去世,我国受邀参加葬礼,四字回复让日方羞愧不已1989年1月7日,日本昭和天皇裕仁在东京病逝。他的离开在日本社会引起了巨大的反应,尤其在政治文化层面引起了较大的波动,比如说,日本在此之前是以天皇年号及在位时间来计算年历的,经此罚款722万后景甜久违露面,与冯绍峰共骑一马满面笑容,CP感十足景甜在娱乐圈中也算是一位比较神奇的存在。出道的时候就搭档了无数巨星,孙红雷刘德华成龙,因此也被无数网友戏称为资源咖,但可惜却始终捧不红,直到大唐荣耀和司藤这两部电视剧播出后才让她有赌王家再添喜事,三房长女接受男友求婚,摆脱渣男后再度选择下嫁赌王又一女儿选择下嫁!曾和渣男纠缠多年,未婚夫家境实力悬殊引言。豪门近期赌王家的消息可谓是接连不断,除了澳娱董事成员大换血之外,一直低调的三房家族也传来了好消息,那就是何超云接受了悬壶济世斗转星移!醉红楼超强灵官能奶能扛任何时候,一个团队里最不可或缺的一定是辅助奶妈。在醉红楼里,灵官便担任了这一个角色。可别小瞧她,她不但能够妙手回春普度众生,还能斗转星移,造成不俗的伤害,达到击杀哦!仙手袪伤清心活
36岁杨幂片场热吻男演员!小9岁许凯一脸害羞,两人情戏甜蜜抢眼杨幂许凯吻戏路透曝光戏是假的,演员却是真的,吻戏和是真的。演员为了演好一部戏,难免需要在戏中与异性产生肢体接触,甚至是接吻,而这一些接触,都是可以过审和被观众所接受的。10月份,知许世友长子许光81岁路边找人修鞋,患癌提三不,不给子女托人情在阅读此文之前,麻烦您点击一下关注,既方便您进行讨论与分享,又给您带来不一样的参与感,感谢您的支持!前言2016年的冬天,几名来自全国各地的记者,专程赶来河南新县。他们此次前来,正穆帅打下的基础?热刺10轮7胜要争冠,孔蒂有望2次摘他留下的桃子本轮英超,热刺在主场迎战埃弗顿,结果他们20完胜对手。本轮过后,热刺本赛季前10轮比赛,已经拿到7场胜利,目前在积分上暂时追平了曼城(本轮比赛还没踢),连瓜帅都表示,热刺也能成为争哪些银行可以长期持有1中央银行和政策性银行与普通交易者没关系。2大型国有商业银行总共个,工行农行中国银行建设银行交通银行和邮储银行。想要挣大钱频繁操作快进快出的话,没必要关注。想要规避风险,每年收取固世界标准日数字经济时代,我国标准数字化发展现状如何?本文选自中国工程院院刊中国工程科学2021年第6期,来源标准数字化发展现状及趋势研究J。中国工程科学,2021,23(6)147154。,本文来自微信公众号中国工程院院刊(IDCA最新消息全国多地,已下调作者丨唐婧编辑丨曾芳,刘雪莹图源丨图虫贵阳首套房贷利率最低可以到3。9,不过暂时只有三个银行能做,分别是农行交行和中行,其余的银行可能还在走流程。政策只持续到年底,现在差不多就是抄1012月,农民养老金和社保需要注意3个变化,事关个人待遇,看看1012月份,农民养老金和社保需要注意3个变化,事关个人待遇,你要知道10月份到年底这段时间,农民朋友在养老金和社保方面需要注意有3个变化,影响到个人的待遇,你需要知道,同时建议转2023年度新农合又涨价了,最低要交350元,还值得买吗?最近,各地陆续启动了2023年度城乡居民医疗保险的缴费工作。集中缴费期是9月1日至12月底,目前已经有湖北江西山东等地开始缴费了。根据国家医保局此前会同财政部国家税务总局发布的相关甄嬛传端妃收养温宜公主的内幕,不是你想的那么简单原创文章,看影视解说,读智慧人性!甄嬛传里面全是人精,端妃就是典型代表。宫里那么多没有额娘的孩子,比如四阿哥,额娘死得早还是个儿子,但不能生育的端妃偏偏喜欢仇人曹贵人的孩子温宜公主工伤认定时遇阻人在途中的小哥何以证明上下班途中送餐员快递小哥等新就业形态劳动者常常因没有固定工作地点而在工伤认定时遇阻工伤认定如何新题新解人在途中的小哥何以证明上下班途中本报记者裴龙翔编者按根据工伤保险条例的规定,职工在工作时中外弟子纷纷殒命,法轮功莲花宝座下白骨累累2017年1月9日,美国俄亥俄州发生了一起骇人听闻的凶杀案。一位名为陈明明的女性惊慌失措报警,称自己女儿赵艾莉失踪了。警方到达现场后,出动了大量警力寻找,陈明明的丈夫赵良杰也显得十