温馨提示:文本由机器自动转译,部分词句存在误差,以视频为准
00:00
同学们早上好啊,今天我们来谈第11道题,如何设计实现一个双向链表,那这一块呢,主要是考你有没有看过里面的源码,好OK,下面的话呢,跟着我来看一看。同学们大家好啊,今天我们来聊一道关键的面试题,那么是在link格list这里面啊,因为呢,我们在谈link格list的时候呢,经翅谈到啊,它的底层呢,是这个双向链表啊,但是呢,当我们反问一下说诶说这么六,那么我们怎么去设置一个双向链表呢?好了,一般来说遇到这道题目的时候呢,就会有一部分同学会卡掉啊,那好,那么在这里面你能不能写出来,那么你可以思考一下啊,打在公屏上,好,那接下来的话呢,我们来往下看答案啊,你看看是不是跟你思考的一样好,那么双向链表,双向链表我来看一眼啊,首先非常关键的点是什么?我们知道双向链表它意味着有前置有后置是吧,所以呢,在这里头一般来说是这个样子的。第一啊,这个链表有三个部分,第一呢是我们的前置,中间呢是我们的数据,后面的话是我们的后置,我们可以来看一眼,前置的话呢,就是我们说的这个prepare啊,然后呢,里面的数据是我们item,后面的话就是我们的N。
01:10
这个啊,这个节点我这边画的有点小啊,这边看起来就会有一点一点耽误,没关系啊,关系也不大啊好,那咱们继续来看一眼啊,那首先的话呢,前置是吧,那么一般来说看到这里面的话是这样啊,在我们后期的话呢,一般来说都有这是泛型了是吧?那这是泛型的话,所以此刻在这里面大家可以看到这边用的是泛型对吧?用的是泛型啊泛型的描述的,所以呢,这个类型要用泛型的描述啊,这样的话呢,我们就可以灵活的去给它设置不同的类型,对吧?OK,好,那么其实一般来说重点大家会错的地方是什么,是在这一块有时候会想不清楚啊,其实大家可以思考一下所谓的前置节点,后置节点,你看前置节点是不是啊,所以说明什么?说明我的前置这个地方指向的依然还是个节点,对不对?后置节点是不是也是要指向一铺一批一批跟它一样的东西啊,是吧?后置节点,前置节点,所以呢,意味着什么呢?意味着这个前置指针和这个后置指针指向了都是同一个类型的节点,所以在这里面它们的类型也依然是nod nod。
02:11
啊,这一块啊,你可以稍微联想一下,前置节点后节点啊,所以其实如果你理解了这个意思的话,其实这个东西肯定是不需要背的啊,是理解之后我们可以写出来的东西啊好了,那么在这里面怎么去构造一个双性链表呢?最关键就是我们看到此刻看到这个东西,你把这个节点类写好了之后是吧,剩下的我们创建很多的节点,然后这些节点呢,分别设置他们的什么,设它们各自的前置后置,那么整个链是不是练起来了,所以大家可以看到这里面有构造方法,这构造方法你看这个两方指向前置,这地方表示前置,中间是数据,后面是后置是不是?那我就要创建两个节点,然后呢,让其中一个节点next指向下一个,下一个节点是不是就列表链起来了,对吧?那反过来它的前置呢,指向我,OK,那么这样的话,双向关系就建立了。对不对,OK,好,这个呢,大家可以写代码尝试一下啊,这就是我们说的这个如何去设计一个双向链表,那么关键点总结一下,第一设计好一个node类啊,第二的话呢,在这里面的话,创建好node节点之后,我们去设置彼此的双向关系啊,就是前置后置的关系。
03:15
好,那今天呢,这道面试题比较简单,但是也是容易卡掉的题目,那么应该你学会了啊,设计一个双向链表。
我来说两句