00:00
好,同学们,我们继续通过前面的介绍强调过了,只要说red list底子,你就说就叫quick list,那么什么叫quick list双端链表这种思想?每个list里面有node node里面又存个ist,杨哥,请证明这张图,弟兄们,源码说话来。首先我们这儿呢,六先说,所以说打开这个六啊,我们在这儿呢,用的是quick list.h首先有两个内容在这个文件啊,H是C语里面的头文件定义下啊,Had和tell就是指向双向链表的表头和表尾,它有两个最重要的结构,请先看quick list来弟兄们。搁到这啊,还是给同学们看一下源码,一说这个type DeFine,这个不用我多说了吧,见过这么多了,请看是不是有个头指针,有个尾指针,这个quick list里面头尾指针,它就是像一列火车,每一节车厢就叫quick list noe,头尾指针OK,这有个看,直接告诉你统计所有实体在这个里面的all the list。
01:18
讲完了,OK,很简单,所以说同学们请看,在这我给同学们呢抓了图,把重要的挑出来说一下,指向双向列表的表头,指向双向列表的表尾,说明quick list借鉴了Java里面link list的思想,双端列表,那么这个这些动洞,所有的zip please里面一共存了多少个元素等等等等,不废话,这是它的缩配比,刚才我们也看过啊,在这儿是不是有什么压缩的这个东洞,OK,好,默认深度是零,不压缩怎么的,这个它与默认的咱们不了解,呃,我们不用关心,得到一个结论,一,双向链表,第二,每个quick list里面主要放的是quick list node,所以转战到quick list node,我们搁到这,弟兄们。
02:07
OK,来吧,往下翻。在这我们会找到来quick node里面是不是又有点像我们的link list这个node一样,Next previous,后指针前指针,那么人家也叫的是什么?前置指针和next下一个指针得到一个结论,每一个quick list node,它呢都有前后两个指针,那么请问是不是就是我们这张总干图对应的?下一个前一个OK证明了吧,那么再来请看重点,它这有个ZL,阳哥,这个ZL是什么动作,就是我们的z please的缩写OK,所以搁到这同学们看一眼,也给大家呢做了详细的说明,那么在这是叫前节点,这个是叫后节点,这个ZL就是指向实际的z please说明。
03:14
每个quick。肚子里面都包含一个zip list压缩列表的节点,而每个quickly note都放进我们的quick list OK,所以各位亲,结论就这么一句话来吧,搞到这quick list前后两个节点指向quickly note quickly note就有这个ZL指针,每个都指向一个z please,讲完了,所以同学们WRITE6,它的结构就长这么个样。请同学们务必了解。有了前面六的基础,那么现在来学七,那简直是一马平川一刀过走案例大家请看看get list。
04:04
一回车得到什么,出现一个list pack,我都觉得我都不用解释了,所以说简单一句话,七就是用这个代替了,这个讲完了,那么替代了以后在版本。七这个版本的时候已经没有压缩列表的配置了,六仅仅是作为过渡和兼容,哎,好,源码说话。那么对于我们的七而言哈,我们大家都清楚啊,这个呢,是六啊,回到我们的七不能搞错了,来l push明白吗?而push杨哥,那这两个命令底层对应的又是什么呢?同学们,第一个。对于我们这个七,这是不是有我们的t list.c100%,我们真真正正干活了,就这个,那么你那些命令就会调用它好了,那么弟兄们我们找过来。
05:02
请先看一下t list.c啊,我们呢,直接t list.c不废话,直接给我去找,找什么呢?是不是l push来,同学们请看l push r push等等,找到一点类似了吧,哎,但是这个叫什么push general command,好像还不是特别的接近,再找找诶,同学们对我们7t.c l push l push等等熟悉吧?那么请看l push是什么key element什么元素,也就是啊,你丢进来这么一个。内容,真真正正干活的是push general,底层都是封装的同一个方法,好,那么这货干什么?那么来吧同学们。人家干的活是这样的,假设七你是执行一个l push或者是r push,底子都叫同,都叫同一个方法,这一波强调过了,我们只是为了面试知道这个底层数据结构,人家考的就是底层数据结构,不需要你逐行的去读这个C语言的代码,你别他妈debug,巴拉巴拉巴拉给我弄就下来,不要这么干,吃力不讨好,人家外面考什么,我们呢就学什么,了解大体意思,底层这个方法一定要用,同学们前面是些判断验证等等,大家请看,这是不是有个东西叫create quick list object,创建这么一个通道,那么来设置等等,最终弟兄们请看。
06:38
我们下面会告诉你quick list set options干嘛,在我们的七这个版本,人家是不是直接告诉你设置的是叫list pack紧凑列表,以及读出对应的压缩深度啊,从这来跟你构建好,所以说同学们请看。得到证明,我们用这个调的是这个RED7版本,Zip list被替换成list pack,压缩深度用设置值或者默认值,那么打开我们对应的RED6呢,还是t list.c好吧,那么另外一个,那么同学们我们找找找找找也还是熟悉的配方,也还是熟悉的味道啊,那么干脆呢,我在这六给我找这个懂不懂?
07:30
来,同学们请看this command是不是还是个方法,巴拉巴拉读这下来前面过就干一件事,对于六这个版本,人家装的是什么z list,哎,还是有压缩深度的参数值,所以七和6DESIGN都叫quick克list这一种数据结构,这种数结构里面六砖压缩列表,七砖list pack紧凑列表,讲完了就这么点区别,OK,所以呢,各位同学我们再来看这是不是就什么创建create quick list object这个也见过吧,你看又出现了object.c然后我说过这句话,真真正正对我们操作Java程序而言,都是操作一个叫object对象的这么一个引用,OK,好,那么基于此,我们就可以获得RED7的list的一种编码格式,七这个版本还是叫quick list双。
08:31
项链表每一个节点就叫list派,那么在七这个版本下面,Quick list就是list pack和link list双端链表这种思想的一种结合体。OK,好,那么同学们list数据结构就给大家介绍到。
我来说两句