00:00
好,各位同学,接下来给大家介绍z set数据结构,那么由于有了前面的这四大类型的数据结构,这个呢,也不难,但有且仅有一个新的知识点,叫SK list,俗称跳表。好,同学们开门见山,植入主题,先背下来。面试过程的时候,人家会问你,请你谈谈the set的编码和数据结构。两个。对于六及以前是压缩列表加跳表B,那么就是紧凑列表加跳表,说白了这两个我相信同学们听到现在非常熟悉了,唯一区别就是跳表,基于此,我们把跳表放在下面单独一张。那么现在先暂时。不再深入具体的介绍跳表我们下一个章节再说,那目前只需要了解the set它的底层数据结构的构成即可。老规矩两个版本案例说话,先回到我们的RIGHT6,那么看get this set,大家请看是不是最大的。
01:13
个数128个,最大的占用长度64 OK,那么来吧,弟兄们这个时候又会发现。还是跟我们的z list有关系,好,这是我们的六,那么七呢,弟兄们,Can get the set,大家请看。都了解,最多就是把the list换成了list pack,为了过渡和兼容,依旧保持这个,我只要设置了这个,其他的通通会变更这个东西,弟兄们不用多啰嗦了吧?好,所以呢,来吧,一句话,当我们的有序集合中包含的元素超过服务器的最大的这个,比如说默认值是128,或者有些结合中添加的元素的这个门板的长度大于这个64个字节的时候,那么就会使用什么跳表来做底层的实现。那么来,弟兄们请看默认配置幺二八六十四啊,改成三和六以执行,OK,好了,下面请看啊,ABC是不是三个以内,那么三个以内的话干嘛人家就用z list,我们前面强调过小而美的都叫z list,但是如果我用ABC加了第四个呢?对不起,马上从zist。
02:33
转换为了list。压缩变跳表,OK,这是我们的一个什么个数上的限制,第二个我们这是多少?六六个字节,123455以内是压缩列表,超过六了以后马上变跳表,所以说对于我们z set结构底层就是压缩列表和跳表的转换范围以内是压缩列表,超过峰值了那么变成跳表,六跟七就这么点区别,来同学们请看这个是我们。
03:05
刚才的笔记60 64和128设置成三和四,弟兄们只要我设了list派,那么对于七这个版本而言,是不是马上也是跟着联动啊,所以说这个呢,前面也试过,不再操作,不再浪费大家时间,下面我们来跟刚才的一样,ABC3个,那么大家请看type this set什么类型,This set来吧,编码list pack来吧,再加一个变成什么T,所以对七而言,也还是跟刚才的六一回事,范围以内叫list pack,超过了我们这个N垂和value的限制啊,变成跳表,这个就是我们的什么z set的底层数据结构,那么下面。六跟七两个源码分析,直接给同学们抓图了,不再反复切换六。T z set.c来吧,请看人家直接告诉你了,这个命令是不是就是the please到哈西到跳表的转换,那么我们的z set at这个命令。
04:08
来,对于六而言,就是z list和跳表,原码上给同学们做了证明,案例上给同学们做了演示,对于七而言,那么弟兄们请看源码上是不是从zist变成了我们的什么list pack,然后同样还是我们的什么跳表,OK,就这么点区别,所以同学们对于我们this set只需要记着这个结论,那么重点就是我们下一章节要给大家介绍的跳表。
我来说两句