00:00
好,同学们,我们接着呢给大家来讲一下RA的相关内容。那么上一次课呢,我们讲到了这个red,它操作呃,几种数据类型,其中呢,我们哈希还有字符串,我们说了,那现在呢,我们来再看一下这个类似。List是什么东西?来瞅一眼啊,我们来看看,List呢,它翻译成中文呢,就叫列表的意思,那列表呢,它是简单的字符串的列表,它有个特点,对不对,是按照插入的顺序。这个。排序就是说他按照这个插入的顺序进行排列的,你可以怎么想呢?你可以添加一个元素到这个列表的头部。也可以添加到它的尾部,因为它呢好像是一个。管道一样,你可以在它的前面加数据,也可以在它的后面加数据,所以说这有一个什么呢说法就是链表的这个list的本质呢,它是一个链表。
01:05
那这个链表呢,我们还没学啊,但是呢,后边呢,很快就要学这个链表。啊,那么list的元素有几个特点,第一个特点呢,它是有序的,就它的顺,它是有顺序的。它是跟你这个顺序是有关系的,第二个呢,元素的值是可以重复的,注意前面我们讲的那个哈希,它有个特点,它的元素是不可以重复的,大家看这里。哎,我们讲到这个哈希它有一个特点。在这儿我们应该是讲过。哈希。哈西,我们看这里有没有说这个东西啊,哈西。哦,哈希没有说这个事儿啊,哈希的就是他的K不能重复啊,他的K不能重复。好,然后呢,我们再看举个例子,比如说我们存放多个地址,比如说我要存放多个城市,那么如果存放多个城市的话呢,这个K就是CT。
02:04
它的值呢,就是后面的这些城市的名称,对好,这是它的一个简单例子,我们来看一下它的一个简单使用,怎么往里面放东西啊来啊,现在呢,启动一下我们的这个red。启动一下我们的red。好,把server提起来,把server提起来。好是不起来了,然后呢,启动我们的client。Client,好,我们来玩一把啊,比如说现在呢,我把那三个城市放在我们的历史中,那种用哪个指令呢?啊,我写个简单的先l l push。同学们看到这是个K,比如说我有city城市,第一个北京。第二个,比如说上海。第三个天津。好,写完了回车,同学们可以看到现在呢,就这一句话,就把三个城市放进去了,那这里面怎么看,第一个就是我们这个list的那个名称啊,你可以把它理解成是个K,然后呢,后边是它的值,大家看到一个list呢,对应的值可以有多个啊,有多个元素,那怎么取呢?先来看一下取的方法呢,可以用这样写range。
03:25
然后呢,C我待会解释一下四大是什么意思,代表你从哪一个位置开始取我们的元素,它的元素呢,对应的下标从零开始,说说我从零取到第几个呢?OK,假设你想全部取完啊,各位同学,你就写个负一,负一代表什么意思,各位同学。零代表从第一个元素开始取,因为它下边从零开始算的,负一代表我要把它全部取完,负一相当于取到倒数第一个的意思,如果你要取到倒数第二个就是负二,以此类推,那这样子我一回车呢,你会看到三个元素都取来了,那取回来的时候你们就注意一个顺序啊,同学们,你们想一想这个顺序是什么?
04:10
顺序是什么呢?那是这样子的啊,我先简单的说一下,它是这样子的,同学们,那么你可以把我们的这个list想象成一根管道。哎,你把它想成一个管道,两头呢,都没有封尾,注意听,两头都没有封起来。那你封起来变成变成变成宿主了,那么这个没有封的话呢,你看啊,它这个l push代表从这个管道的左边往里面扔,OK。那么左边往里面扔呢,他第一个扔的是北京。那第一个相当于是在北京,他是我写个B。扔到第一个过后呢,他又扔了一个上海,注意上海呢,仍然往里面扔,那往里面扔的时候,相当于把这个币往后面挪了一下,那那我的形象这样说啊,它在它里里面呢,这个链表它有一个它它实际上是这样子的啊,它是实际上不是说网罗了,而是它在这个B的前面插入了一个东西。
05:06
啊,不是往后面挪,因为链表它没有往后面挪,它是往前面插了一个后面我们喜欢链表大家都非常清楚了,相当于插到这个B的前面,那那这个时候呢,就变成这个上海在前面了。上海在前面过后再上个天津,天津呢又在这个它的左边往里面添加,所以说天津在这儿。整个相当于这个管道边是什么样呢?天津在最在这个在我们这个历的最左边,上海这中间B在最后边,那这样子我取的时候,我取的时候看到l range相当于是从左边开始取,因此它的顺序是天津上海,北京跟我们顺序刚好反过来。刚顺序刚好反过来,那么是不是这样子呢?这些都有都有用处的啊,同学们,因为你将来在做这个开发的时候,你肯定会有这种特性,好回车,我们可以看到果然如此,天津上海北京啊,这是一个快速入门案例啊,先给同学们板书到这儿。
06:07
好,我们来看看刚才说的这个小案例,那么我们讲的是什么呢?就是类似的列表的一个介绍和它一个说明。那么待会儿呢,我们再讲细节。好,List,给他一个标题三。给他一个标题三好,那么具体我说了什么东西呢?各位朋友好,具体来说我就讲了一下这个东西对不对?举了一个快速入门的小案例。好,然后呢,我这有个入门案例,对不对,入门的案例,那入门案例呢,就简单说了一下他的一个使用。它的一个使用,好,先把小案例放到这里来啊,案例是这样写的,就针对前面这个存放多个地址呢,我举了个小案例,同学们好,我把这一块给大家板书到笔记里面去,具体来说就这么玩的,对不对?非常的简单哈。啊,今天后面的内容就比较复杂了啊,好,我们先把这个简单的说清楚,看清楚了,好把它放在这。
07:06
好,这个之诶接截错了啊,接错了方这说完这个过后呢,我们接着再来看list的一个详细说明,那首先我们来看看关于在RA中历史的操作,主要的指令大概有这么六个,大概有这么六个,第一个呢L。L是代表我们这个数据从左边插入。R push代表从它的右面,相当于从它的尾部插入L,看一下这个这个说法L,它的基本语法是k star和stop。那么k star和stop什么意思呢?大家可以看到返回列表K中指定区间内的元素区间以偏移量star和stop指定下标index的参数。都以零为底。也就是说,以零表示列表的第一个元素,以一代表第二个元素,以此类推。
08:05
以此类推,那你要取到哪个元素,哎,你就写到哪里去,比如说你想取截取我们这个list里面的第一个到第二个,那就是零一完事,那么再来看,你也可以使用负数下标,负一代表列表的最后一个,负二代表列表的第二个,以此类推。那比如说刚才老师用的零负一,就代表从第一个元素取到最后一个元素。那如果取的是负二呢,代表我取到倒数第二个元素,以此类推,好,那这个图呢,大家注意看啊,怎么理解这个历史的呢?我画一个非常简易的图啊,你可以这么去理解。非常简单一个图。它的本质是一个是一个列,它的本质是个列表,那如果说列表的话,应该是这样子的,List的一个数据结构分析。数据结构分析,它是这样子的啊,啊,这个怎么这么小呢,我把它放大一点,各位同学这字放大一点啊,它的本质是这样子的,最先前最先前加入一个就是一个节点。
09:07
就说list最先前它只有一个,比如说你加了一个list在这儿。如果你如果你往这个列表的左边开始加入,它是怎么加的呢?假设你这已经有一个数据了,比如说这个数据叫AA,这个数据再往里面加的时候呢,它是从这样子的。它是这样加,这样加之间呢,它们形成了一个指向。就它的指向永远是这样子的,就是前面的指向它。好,这样子,如假设加的是BB数据好,那么就往前面去了,如果你再加一个,从左边再加啊,假设你还是从左边加,还是从这个方向加。好,如果你还是从这个方向加的话呢,那它又在这个找到这个历史的最前面这个元素在这前面在。插入一个数据,比如说C吧。
10:00
好这样子,那C插完了过后呢,他们之间又形成一个指向啊,到时候我们会具体来看它到底是怎么实现的,如果你的数据,各位同学,如果你的数据是从这个右面,也就从从它的尾部添加的时候呢,各位同学它是这样子的啊。它就变成这个样子了,好,我把这个挪动一下。如果你是从这个这边加入,那么比如说你加入一个D,加入个D的话呢,它先找到这个list的最后面,然后呢,从这开始加入,比如D,然后呢,它这边之间由它又指向它,注意它仍然是这样指向啊,不会反过来指向还是由这个那加上,那这个D呢,就变成屁股后面了,如果你再加一个元素在这边加。好说老师我再加一个E,加一个E的话呢,它实际上是找到对这个对尾,找到对对尾过后呢,加进去过后,让他们这个链表继续形成一个指向。好,所以说它永远是这样子的啊,他这样那取的时候呢,同学们默认,默认的时候就就看你怎么取,从左边开始取对吧?啊,那肯定你不能说取中间这个啊,从取中间列列表,它有这样一个特点啊,它是这么一个关系,好底层就是这样子的,到后面呢,我们在学数据结构的时候呢,还会形成我们自己写这样一个历史的结构啊,这样就更更好了,比如说有些地方你发现一个历史的不能满足你的需求,你想自个定,自定义一个历史的也是可以的。
11:27
好,这是它的一个结构啊,数据结构的一个分析,我先给各位同学拿到这来。好,把它放在我们的笔记里面去。好,这是它的一个结构分析,好,那么我们来看一下它的具体的一个其他的使用,增删改,我们都都讲一讲。好,我把它板书到笔记里面来啊,好,这是list。给他来一个标题三。然后呢,我这里画了一个简单的说明。然后呢,我们画了一个图,哎,画了一个简单的图来描述list的底层,它是怎么一种机制。
12:06
好,有点稍微有点卡顿啊,OK。好,我们先把这个历史的基本介绍说到这里。
我来说两句