00:00
接下来我们再来介绍另外一个非常常见也是非常经典的数据结构,那就是队列。队列呢其实是一种操作受限的线性表,它整体来讲存储的方式也是一个线性的数据结构,只不过呢,我们对它的操作只能是在头和为两端进行进对和出对的操作。啊,那么所以我们可以把它看成一种特殊的列表,或者叫特殊的序列,在skyla里边,序列这个数据结构里边就包含了。我们看到就包含了Q这样一个对应的集合类型啊,所以它其实是属于liar seek线性序列的,那对于这个队列而言,我们知道它最大的特点就是先进先出,那进对和出对的方法,呃,这个都很熟悉了啊,就是in q和DQ。接下来我们也在代码里边做一个简单的测试。
01:00
还是创建一个测试的object?现在是第19个,我们要测试的是队列这方法写出来,那这个比较常见的,大家可能比较熟悉的应该是可变的队列啊,在SKY里边其实也是区分可变不可变的队列的,所以我们接下来可以创建一个可变队列,因为我们想到队列里边应该是直接里边的数据是动态的嘛,可以进对,可以出队,那应该是可变的,我们就直接先这样去创建一个Q,那这里边我们会想到不是直接去new一个Q呢。我们看到这里边需要去做一个引入,那有两种选择,一种是GALA collection multipleable.q另外一种是1muable.q哎,我们这里边先碰见一个muable.q我们会点进去会看到,诶,这里边确实它是一个class,所以我们可以利用这个new的方法直接把它创建出来,当然了,下边我们会看到同样也有一个伴生对象,哎,所以用伴生对象的方式去创建也是可以的啊,这两种方式都可以,那同样一开始在创建的时候,我们可以给对应的数据,也可以不给啊,那当前既然是multipleable啊,我们一开始这个干脆就不给了,只是定义一个。
02:33
一个string类型就可以了,这个定义出来之后,前面的这个类型其实就可以不写了啊,我们可以自动让编辑器做一个推断。大家看到就是点Q。而且对应的泛型是string,把这个要直接列举出来啊,我们可以直接把这个放在后边,那接下来我们就可以做对应的入队和出队操作了啊啊,那入队操作呢,非常简单,In q,然后我们看到它的参数。
03:07
是string类型嘛,所以所elements都是string,而且还是一个可变长的参数,那同时我们可以输入好几个元素,让它进行入队操作。如果我们想看里边的元素的话,当然就可以直接line当前的Q把它打印出来,我们看到就是ABC啊,这个是非常非常容易理解的一个状态啊,那接下来我们要看一看出对的操作,那出队操作的时候。大家看到入队这个操作呢,其实没有,没有任何返回的,是出队操作。Q,它是有返回值的,那返回的是什么呢?当然就是当前我们出去的那个元素嘛,哎,所以接下来我们同时可以出对之后,然后把它出列的元素做一个打印,Q点DQ,然后接下来我们继续去print line一下当前它的值。
04:11
我们可以直接把这个copy一下啊,然后继续出队,继续print line。看看现在的状态是什么样?这就是最初是ABC,那因为先进先出嘛,我们第一个入队的是A,那当然现在。出的第一个是A,然后剩下的是BC,出一个B,剩下的就是C啊,那如果说我们后边再去做一些入队操作的话,EE说这个操作的话啊,接下来我们的就当然就是在C后边会有对应的这些数据进来,那如果说接下来继续去铺对的话,当然出来的就应该是C了啊,这自然是我们能够想到的。
05:04
序列的基本的一些操作啊,因为数据结构非常的经典,也比较简单,只要我们能够做一个测试,知道怎么样去使用接口就可以了啊,那另外呢,如果说我们想要使用可变的列的话。其实也是可以的,不可变队列的特点当然就是我们可以先把这个定义出来Q2啊,那有同学可能想,那这个创建的时候自然就是还是去有一个Q嘛,但是这里边就不应该是muable错了,而是我们要引入imutable,哎,那这里边大家会发现这个直接引入之后,好像不是这样的一个写法,对吧?哎,在这里边imutable下边。对应的那个Q难道是不能直接这么去创建吗?啊,确实是的啊,我们这里边如果要创建的话,应该。
06:00
我们做一个引入,直接用imuable.q下边的这个产生对象,我们看到。在当前的这个定义里边,上边同样也有Q,它是一个c class,这是一个密封类啊,所以我们不能在外边去直接啊对应的啊,产生它的这个实例,那所以接下来我们在这儿可以把这个Q里边的数据直接都进去ABC前类型,那就不用写了,肯定就是一个q string了,还是放在这儿啊。哎,那接下来如果我们想要做一些入队出队操作的话,我们就会发现当前的Q2,他其实本身自己,我入对一个,他本身自己其实是不会改变的,我们运行一下。
07:09
大家看到当前的这个Q2还是ABC接,还是来一个分割线,让大家看的清楚一点,那怎么样才能得到它改变之后的值呢?当然就是在用一个新的变量去接收前,我们创建出来的这个新的队列的对象啊,那这样的话就是负二自己自己是不变的,但是它生成的这个Q3里边会多了一个D啊,当然就是出队操作也是一样的,这样的一个处理的方式啊,这就是关于队列的操作。
我来说两句