00:00
那现在我们来回顾一下站的基本使用。那么站。有,有数组模拟,我们就用数组来模拟一下站的快速入门,用数组模拟站的使用,由于站是一种有序列表,对吧?那么当然可以用数组这个结构来存储站的数据类型,下面呢,我们用数组来模拟一下它的出站还有入站的操作。出站和入站操作是它的最核心的,那么实现的思路大家看一下,待会呢,我们要用数据来模拟,对吧,我们叫奥瑞sta也可以,那么这个占顶,占顶呢是top。好,现在呢,我们就来开始写这个站了啊,我待会呢会用速度来模拟好,我们一起来完成它。有赞的快速入门。站的快速入门。好的,那现在呢,老师就开始来一个一个洗了,好吧,我们先建一个包包。
01:04
建一个包,这个包呢就叫sta。没问题吧?好,我们先看一个最基本的案例,叫奥瑞克,那为什么我取这个名字呢?因为诶,我这个战士用速度来模拟的,所以说我叫奥瑞克,就这么一个原因。好的,同学们注意听讲啊。今天的今天的这个代码呢,都比较骚扰,就是你你感觉好像都听过,但是突然让你自己写,你是很难写出来的,对好,那现在开始写它class。我们就叫a star。好,那呃,根据刚才我们讲的这个这个这个原则呢,我先写个max size OK,那么初始化的时候,我们让它输进来它的一个size值大小。这个没问题,说实话我们放进来就是这个,这个马赛就代表我将来这个站呢,有多大站,它不是一个无限延伸的。
02:05
它一定会有一个满和空的问题啊,假设这个就是我们这个站的大小。占的大小,OK,那既然有这个占的大小,那么我们这个数据放在哪里呢?放在数组里边去,所以说我要写一个数组。OK,那数组呢,我们就写R。啊,这或者这个这个这个就是我们占了啊,也可以理解成这个就是占sta是个数组等于661个R。那么我们假设放的都是整数。甲方的整数,我一共要放多大呢?马克赛这么大?可以了,好这个站,那呃,还有一个呢,我们要把这个站顶先定下来站顶。当你没有任何数据的时候,这个占点呢,应该等于负一。这个能理解啊,就说初始化为多少呢,初始化。为负一,这能理解吧,那就是VR它有变化,Top等于负一。
03:04
好,这是它的一个基本的这个属性,那现在呢,我们先写这个站的几个核心方法,就是占满。就说这个赞什么时候为满?满了,哎,占满不着急啊,这个地方占。为什么没这个呢?第三个还有占空。占空问题,好占满了,我们一样这样写,第一是负。那同学们想一想。我返回一个布尔值不定值不定值,诶同学们,你们认为什么情况下这个暂时满的呢?哎,Very good,就是top,它于这个max size减一对不对,诶,那就是top,如果等于了max size减去一个一。这个呢,就是占满,那同样的道理,我们写一个is empty p。
04:02
OKNPT,那么同样的道理,我们来写一个空,那什么情况下为空呢?是不是这个top是不是等于负一。这个能理解,就是说如果你等于负一,那就说明这个战士什么数据都没有对吧?好,有了这两个呢,我们就开始写入站。我们写已入站,还有一个写一个出站。出战。还有一个,还有一个便利站,对不对,便利站。肯定这些最基本操作我们要有吗?我们先写入账。Di。入站的有个专业的术语叫什么呀,Push。啊说我们push一个数据就叫入账对不对,那这个数据呢,我们当然你得给我一个value了,我我得拿这个值,当然这个值是多少,这个那你传进来是什么就是什么,那你在入账之前,你是不是要判断是不是已经满了呀。
05:00
对吧,说如果is full。那么我们这个地方就直接输出一个信息就占满。哦,赞满。哦,站满那就没法放了吗?就。你入账肯定要满了,你还怎么放呢?没有办法入账就是放数据的意思啊,就是相当于说放数据。放入数据。那初探肯定就是取出数据了。那一般我们要入站出站就要取出数据。数据OK,这些将来我们都要用的啊,那如果说他没有满。那怎么办呢?怎么写啊?是不是先把这个top往前面走一下。是不是要走一下呀,啊走一下走一下过后,然后呢,把找到这个sta。诶大,然后呢,这边我们是一个top。等于你传进来的值,这个能理解吧。
06:02
就入战就成功了。出战。我们来写一个出战,Di叫出战,有个专业术语叫pop。以后大家一看到push和pop就知道一个是入战,一个是出战。好出站呢,我们是不是也很简单这呃,因为他有可能没有数据,所以说我们有可能抛异常,因为他要取数据回去嘛,那我就这样写了啊,如果一是。空。就说他这个没有数据了,没有数据呢,我们也不啰嗦,直接返回一个什么呀,异常就直接告诉他什么占空。战空。A,占空能理解吗?好,那下面呢继续走,如果它不为空,我们又把这个数据给它返回,那怎么返回呢?呃,首先你们要清楚的知道。
07:00
你其实按理说是这样写就可以了。是不是你占顶的数据就是它呀,但是你要写你这个top是不是没有机会减一了呀。哎,这样写是不行的,那怎么办呢?同学们,是不是我们先把这个结果先保留一下,就是取出我们这个值,取出这个占顶的值。这个能理解吗?先取出来,取出来过后我把这个top减一。诶。减一,然后再把这个值返回,这个能理解吧。没问题吧?好的,那就是入站和出站,我们就写完了,最后还有一个便利站。便利站,那同学们,我们把这个站呢也列出来,我们叫list吧。好的,那历史这个站是不是我们也要判断,如果他已经什么数据都没有是不是。没有办法便利呀。
08:00
空的你肯定没东西嘛,那就直接输出一句话就说,呃,占空占空没有数据。没有数据,没有数据你就别玩了,直接怎么样。那如果不为空呢?我就要开始便利,便利是不是根据我们原先讲的这个规则,它是。他是。怎怎么便利呢?A。他是不是。要这样写啊,For循环。I。走零到马赛。您到0ON。Until。诶,这个地方怎么写的不对啊top。这个top是包含的,是不是包含这个top应该是to。Two。那大家想这样打的话,是不是他先把这个零打出来的不对是吧,我们按理说占顶应该先把占顶打出来。
09:06
因为你取的时候你想从站点取的嘛,说这个时候你要怎么玩一把呢,Reverse这个我就不讲了,就这样子呢,它是反向打的。OK,那现在我们把这个站打出来啊,各位同学叫print,我就打出来这样写啊,我们打个打一个格式化对吧。要对不对。呃,老规矩啊,我们百分号D等于百分号D。因为都是整数嘛,百分D,那第一个D呢,就是我们这个。什么字啊?是不是I呀。是这个I,然后我因为我反向打嘛,然后呢,这个值就应该是stock里面的这一个I。啊,然后呢,我们对刚才同学说的很对,有一个换行。好,这样子反向打就可以了,最后结果就有了,好,现在呢,我们有了核心的几个方法,现在呢,同学们我们来测试一下这个站写的对不对。
10:05
测试这个站站的基本使用是否正确,站的基本使用是否正确。好同学们,现在呢,我们来玩一把六一个,那那这样子我们还得最好写个菜单,因为你别看这个不好测啊,你不写菜单不好测,你知道吧,那我就简单的用写写几个方法啊,简单写几个方法,我记得前面好像咱们写过一点。那我就用这个菜单好吧,我就用这个菜单一样用一用吧。好。原先呢是显示的,呃,这个队列,那现在呢,我们显示的是什么呀。呃,这个站我上上哪去了。A。是这儿吧,好。好把这个整一下啊,整一下。好,那现在呢,秀叫显示战。OK,退出程序,这个不用I呢,我们叫做这个最好不叫ADD了,我们叫push对不对,叫push就做push表示添加这个站数据,添加数据到站。
11:13
OK,那么我们还有一个就叫不叫get的,叫pop。表示取出数据啊,表示从占取出数据,占取出数据,好hide这个地方呢,我们也可以写一个查看占的头,我现在暂时不去写它了,需要再加。好,现在呢,我们这做一个简单的一个一个接收。那K等于std in。点read一个难。好,然后呢,我们来做一个match匹配。Match匹配。那我就开始写了啊,Case,如果他输的是一个show。那么我们就。呃,调用那个方法,那当然我这边还要去创建一个站,这个站刚才我们已经写好了,就是。
12:07
OK,然后我们给它写小一点吧,不然待会我测起来也很累,我就写个四,就放四个数据就可以了。那么就做a star。特三就有了,好,现在呢,一旦这样子,我就点它的list。没问题,然后case,如果他输的是一个这个push。Push,我们这就提示一句话说,请输入一个数,请输入一个数。哦,我们就接收一个VR,我就这样写了啊value。Value等于std。in.read一个。啊,Read的一个int,那read的一个int呢?呃,我们,呃得到这个过后,我们就把它放进去就可以了,呃,拿到一个数据我们就往里面放啊叫a stack.push。
13:05
把value放进去。OK,好,这个push咱就写完了,那么再来写一个pop。泡泡pop泡泡。OK,那泡泡就直接掉就行了呗,那就。点pop。那么泡泡它返回是个N令,我们要来对这个结果进行一个小小的判断,比如说我拿到这个结果了,拿到这个结果后呢,我要来判断它到底有没有真实的数据,因为大家看pop,它返回的是any。它有可能抛一个异常,也可能是返回一个具体的值对不对,那现在呢,我就不啰嗦了,我就直接做一个小小判断就行,如果res。第二,Is instance of。Exception啊,如果它是一个异常,那么我们就把这个信息呃给大家打出来就可以了,As。
14:01
exception.get message写完了,否则我们对不对,我们把这信息打出来,我们要什么呢?就说这个站就是呃,取出的数据,取出的数据为。来摆毛弟。然后这边同样我们格式化一下。格式化一下好,然后呢,怎么取呢,就是RS。哦,吸干。好,还有一个就是退出,还有一个退出呢,我们也把它写一下,如果我们收到是一个exist。那么我们就直接调用一个方法,System,点退出指令。然后这是一个什么进去呢?零代表正常退出。好,同学们,现在我们来玩一把啊。看看这个代码能不能。像我们想的那样。跑起来。好来运行一下。来玩一把。好,首先我们先数一下。
15:03
正确他说站呢,呃是空的,没有数据,那现在我push一个。他说push一个数据,我们就push一个十吧。OK show一下。诶,同学们看到是不是,呃,第零个位置有一个死了,我们再push一个。20。点进去了嗅一下,诶同学们看是不是这个20是在占顶呢。诶,所以说我们刚才这个没有问题,因为我在打印的时候也考虑到这个问题了啊,就说呃这个呃,这个是暂停,这个是暂停,我们再push一个啊同学们看看它能不能呃控制住这个占满的问题,好再试一下。没有问题,我们再push一个,应该还可以再放一个数据精确。OKSO,是不是看012,现在我再push行了吗?哎,我再push呢,人家就会说占满了,那我再输一个50。
16:04
是不是占满了没有问题,因为我这个站一定要测试成功,待会我要用它来解决实际问题,这个站起错了就要出问题,好,我们再来泡一下。Pop。当我们泡泡完了过后,取出的的确是占顶的这个数据事实。没问题吧,弹出来是事实,好,弹出来过后呢,我们数一下,我们发现可以那。我问同学们,现在我如果再push数据,能push进去吗?可以进去的,因为我们这个站是不是你push完了,他往下走了一下呀,走了一下它就不是满的了,我再push一个,比如说我push一个50。OK,同学们请看受暂停50了,好,这就没有任何问题了啊,我们全部把它弹完。两个。三个最后一个四个。看完了这个再show是个空的,没问题,再破。占空好,那根据刚才我们这个整个测试呢,我们这个代码是没有任何问题的,那也就是说我们已经把这个站的基本使用给各位同学。
17:08
讲完了。啊,把站的基本使用给各位同学讲完了,那现在呢,我把这个站的基本使用的代码给大家整理一下,待会呢,我们就来解决实际的一个问题了,啊各位站的一个快速入门,把它整理整理。来吧。好战的一个快速入门。首先呢,我们这个地方是用数组来模拟的啊,用数组来来模拟的一个站的使用。然后呢,这边有一个示意图。这示意图呢,我也给同学们放到这来。这是它的一个示意图。好,这是我们的第一个说明。这是第二个。那么有了这样示意图过后呢,我们把这个代码也写出来了,就是代码就实现起来了啊,代码实现。
18:02
第三个就是使用代码。啊,代码实现了这个数数组。数组的站,数组模拟的。模拟的一个站。而这里面最重要的就是出站入站这两个是最重要的啊,OK,那我把这一段代码呢,给各位同学板书到笔记里面去。就叫a star DEMO。Very good啊,很简单。我给同学们发到表格去,好,我们截取一段代码。
我来说两句