如何手写一个单向链表?看这里
创始人
2024-01-29 15:12:20
0

一. 问题展现

通常我们在大多数的面试中,遇到关于集合的问题都是比较多的。一般情况下,许多面试官通常都会问我们关于Set集合和Map集合的相关知识点,并对此进行重重陷阱的布置,此时很多面试者往往就很容易被带到面试官挖好的陷阱里。另外就是双向链表,也是面试频率相对较多且较复杂的问题,甚至还有一些面试官在问完双向链表的相关知识点后,还会变态地叫我们手写出一个单向链表,以此来考察面试者对链表的掌握情况。所以壹哥今天就带大家手写一个单向链表,让我们一起理清单向链表的实现思路。

二. 内容详解

1. 实现思路

如果我们想要实现一个单向链表,就要理解单向链表是如何实现的,这里我们先来一个思维导图,脑海中先有一个实现思路。

根据上图中的有效信息,我们可以大致了解:如果我们想要创建一个单向链表,内部所含变量包含有节点类,而节点内要有值,以及下一个节点的值,并可以持续添加,无限循环地向下递增。

此时我们需要再考虑一个问题,链表既然有增加操作,那就同样需要有减少操作,可是我们此时该如何去进行正确地删减节点呢?其实我们可以向ArrayList一样去设置一个类似指针的东西,每添加一个节点就进行加一操作,每删除一次就进行减一操作。

2. 实现代码

源码如下:

这时候,可能就会有小伙伴疑问,这不就是一个类吗,这样理解也并非错误!其实链表及其他的集合都是一个类,只是这个类赋予了各个集合不一样的功能。

3. 添加功能

在我们最开始接触Java时,我们听到的最多的内容,就是通过Java语言来实现数据的CRUD(增删改查),而作为拥有存储功能的单向链表来说,一样可以赋予其增删改查的功能,接下来就是相关源码。

关于添加其实很好理解,因为有关联关系直接绑定关系即可。

4. 删除功能

删除数据的功能实现如下:

删除功能的实现,壹哥认为是比较复杂的。因为有了绑定关系,就需要判断给定的下标是在开头还是结尾,或者是在中间。如果是在开头的话,那么就不会涉及当前节点的上一个节点,只需要把下一个节点替到前面来即可;如果是结尾,则需将删除节点中上一个节点的下一个关联节点修改为null即可;而如果是中间节点,则需要将当前节点的下一个节点关联到当前节点的下一个节点即可。

5. 修改功能

修改数据的功能实现如下:

修改时要确定传入的下标值与当前链表的size比对。其实细心的小伙伴可以观察到,修改功能其实和删除功能有很大的相似之处,无非就是将对应的下标遍历到,然后在其对应位置将数据值替换即可。

6. 查询功能

查询数据的功能实现如下:

查询数据其实也是大同小异的,就是将节点遍历,将数据以带缓存区的字符串进行拼接,这里其实也可以更换为数组来代替也是可以的,根据需求来设定即可。

7. 执行结果

接下来,就请小伙伴和壹哥一起来看看最终的输出结果吧。

以上就是壹哥对单向链表的手动实现,相信各位在看完本文的详解后,许多小伙伴对于单向链表的了解也能更为精进啦。如果大家想要获取更多关于单向链表等内容,可以在评论区给壹哥留言哦!!!

相关内容

热门资讯

技能培训班创业项目,南京市创业... 刚刚结束的“南京都市圈首届青年大学生创业计划大赛”传来好消息!经过初赛、半决赛、决赛的激烈角逐,我市...
设计工作室创业,大学生设计工作... “选择创业,意味着我们希望能够灵活运用设计方法,解决客户的实际问题,创造和传播委托项目的个人、品牌和...
加盟烧烤店10大品牌,怎么样去...   2022烧烤展(2022烧烤食品及用品展)将于4月15日-17日在沈阳苏家屯会展中心举行。根据商...
创新创业课程小结1000字,创... 回顾这一年,我和家人接连遭遇危险。在多重打击下,我几乎走在生死边缘。还不错,我一个接一个活了下来。记...
家乡创业项目,为什么大学生回家... 高考是一次难得的外出机会,但往往很多大学生会选择报考省内高校。考生报考省内大学的优势其实是很明显的,...
华夏信用卡怎么样提额最快,华夏... 这几年流行的游戏很多,像《永恒的抢劫》《绝地求生》这样的大游戏,还有很多像《糖豆人》《拉面人》这样的...
美国富豪创业赚钱,美国富人创业... 不久前,诸樊告诉所有人,富人偏爱定制豪车,尤其是劳斯莱斯定制。最近,劳斯莱斯发布了一款名为舟尾的新车...
适合白手起家的创业案例,白手起...   美食家的生活就像一列火车。总而言之,就是逛,逛,逛。许多美食家每天不是品尝食物就是寻找食物。在我...
想做中空玻璃找销路,创业开中空...   玻璃不仅透明清澈,而且具有较高的强度和硬度,是日常生产生活中不可缺少的材料。那你知道双层中空玻璃...
蛤蟆滩全景图片,创业史中蛤蟆滩... 今天是农历十月一日,传统的节气节日。因为当地人重视,所以不为当年10月1日去世的人烧纸买单。于是,我...