00:00
各位同学,我们来把这一个站呢,用代码给大家实现一下,OK,呃,那么大家看到这个站呢,我这里有一个快速入门。我们用数组,同学们看啊,我用数组来给大家模拟一个站,然后呢,用这个数组来给家演示一下出站入站,还有把整个站进行一个便利。的一个功能实现好,还是老规矩,我们先做一个思路分析,并画出示意图,打开我们的这一个Excel文件。那么我们写一下,就是宿主模拟战。站数组模拟站的一个思路分析图。好,首先呢,待会我们要做一个这个图,我就拿来用了啊,因为时间关系,我就直接用这个图,我直接在这个图上来分析,待会儿我们要实现的整个呃,整个这个站的一个思路。
01:03
我们来说一下思路。实现站的思路分析,第一个呢,首先我们会从这里来看,我们是用数组来模拟战的,对吧?因此这我们分析出来使用数组,数组来模拟战,这是第一个要跟同学们说清楚。第二个呢,大家可以看到这有个top。好使用什么呢?我们用这个top定义,听啊定义。定义一个变量叫top。Top来表示占顶。暂定初始化,为什么呢?同学们,初始化。初始化。初始化为负一。这个没问题吧,就是说刚刚开始的时候,没有任何数据的时候呢,这个top它为负一,我们再来说一下入站,入站的操作,当有数据当有数据。
02:07
数据加入到加入到战的时候,战时我们怎么怎么操作这个事情呢?当我们入战的时候,同学们就是push,那push的话呢,我们让这个top加加。然后把这个数据,比如说我这有个变量叫star啊STK就是这样,然后呢,把我们的数据加进去就可以了,分成两步。这个就是入站的操作,我们再来分析一下出站的操作,出站的操作呢也非常简单,就是我要从站顶取出一个数据并返回。那。因为我们要把这个占顶数据取出,同时还要把占顶减一,因此呢,我们需要有一个临时变量,比如说一个value,先把占顶的值拿到。
03:01
明白我的意思吧,然后top减减,然后return这个value就可以了,好同学们,这个就是实现站最核心的一个,呃,思路分析,有入站的操作。也有出战的操作,好同学们,那现在呢,我们就不废话,我们自己用代码将其实现,将其实现好打开我们的这段代码,我们来一起玩一把,那首先呢,我们新建一个包。新建一个包,这个包呢,我们取个名字叫sta。没问题吧?好,那现在呢,我们建一个类,这个类呢,我们名字叫就叫用数组来模拟的一个站叫r sta DEMO没问题吧。把主方法勾上。把主方法勾上,刚才思路有了啊,首先呢,我先创建一个类。叫做a star。那么我们用这个类啊,有定义一个类叫它表示什么呢?表示站结构站表示站,那同学们刚才看到在我们分析的过程中呢,有一个maop。
04:16
这个max top就是实际上就是我们整个这个占最大的一个空间,就是占的一个大小,所以说我在这里先定义一个变量private markx size。对不对,这个呢,我们就叫占的大小,最大这么多,那么紧接着我这里还有一个数组sta。这个是数组,数组,那么我们占的数据,占中的数据站是用数组来模拟的,所以说站的数据呢,就存在该数组中。将。啊,就是说宿主模拟战。对不对,模拟站,那么数据就放在哪里呢?放在该数组中。
05:01
那你认为是吧?好,那这个写完了,是不是我们还有一个站点呢?别忘了一个站点int top。Top,我们初始化是不是刚才已经分析了出来,负一,当没有数据的时候,这个top,因为top是指向暂停的嘛,所以说当它没有数据的时候呢,初始化为负一,我写到这里栏,这个top表示占顶。暂停初始化。为多少呢?为负一,表示没有数据。好,现在呢,我们写一个构造器没问题吧,Public public构造器我们构造的是什么呢?就是这个站的大小。OK,那就是max size,玩一把,Z是点max size等于你传进来的max,那这样做完了以后,同学们,你这个数组有没有初始化?是不是没有初始化,你要初始化才能往里面放数据,这是Java的基本基本知识啊,我就不多说了,In此,然后呢,把我的马放进去。
06:07
好,各造七就写完了,现在呢,我们先来做这么几个动作啊,先写一个判断,占顶占满是怎么写的?来,同学们,Public booing,同学们想想什么情况下我们的站就满了。什么情况下我们的站就满了,打开这个示意图。站满是不是当我们这个站顶不停的往上走,你看啊,假如我这里有一个指针。假如我这有一个表示占顶的啊,那么他刚开始呢,是负一上去了上去,诶又来了又来又来又来,是不是当他走到我们这个数组的最大。这个值的时候最当然是最大值减一的时候,是不是表示占就满了。这个能分析出来吧,所以说我们判断占满呢,其实非常的简单,Top等于我们的马赛。
07:07
等于我们马赛。哦,等于马赛。那当top等于这个max size减一的时候,是不是就意味着我们这个这个站已经满了,就不能再往里面放数据了?能理解吧?好,我们再来判断一个占空,同学们,占空是不是也返回一个不定值,一是empty pity。你看我们在写队列的时候,是不是也有判断满和空啊,站也是一样,那同学们想什么情况下就是我们这个占空呢?是不是刚开始的时候这个top负一就是啊,也就是说当top等于负一的时候,它就是空,Top等不等于负一。占空好,现在呢,占满占空咱们写了,下面我们来写一个入站的操作,入站同学们刚才已经讲给大家突出了入站叫push,所以说我们就写一个public,什么呢?入站push是不是你给我一个number,我把呃给我一个值吧,给我一个value,我把它放进去。
08:15
那你想一想,你在入站之前是不是先要判断是不是已经满了呀?先判断什么,先判断站是否满,因为站如果满了,你还能往里面放数据吗?显然是放不了的,对吧?所以说is for。如果这个满了,那显然我们没有办法再往里面放了,直接写占满。站满就不要玩了,直接return。没毛病吧,如果站没有满,如果站没有满是不是根据刚才老师的分析,先把这个top加加。是不是top加加,然后把数据放在我们这个站点。Su。Top等于多少呢?Value代码写完,那么我们紧接着再写一个出站的操作,出站单词是pop。
09:10
也很简单,出单是不是要返回一个int呀?因为你现在放的数据都是都是这个整形嘛,所以说pop。那泡泡出战,其实它的含义就是将站顶站顶的数据返回。返回是不是同时你要这个top还要减一下,因为你出战了过后,你下次再取,取的时候就应该是第二站停的第二个数据,所以说注意这个top呢要减减好根据刚才我们的思路,我们来玩一把,首先先判断是否空。先判断判断A,判断站是否空,因为如果站已经空了,你肯定是没有办法再谈的,所以说如果它等于空,我们直接输出一句话。
10:00
啊,我们直接输出一句话什么意思呢?啊,干脆这样子,这个地方因为它。它这个地方是有返回值的,咱们干脆抛出一个异常吧,好用异常的形式来提示大家,就是抛出。抛出异常来处理,那抛出异常同学们在学过前面应前面学异常处理的时候应该学过对不对?六一个runtime exception,为什么我这里抛出的是一个运行异常呢?因为运行异常咱们这个地方啊,就是直接可以抛出,你不不补货啊,你不补货代码也没问题,你补货呢,也能捕获到是吧,所以说我这直接写一个叫做占满。啊,占空占空。占空。占控。好,没有数据是不是这意思吧,好,紧接着这个地方return需不需要有。Return需不需要有,Return不需要有啊,Return不需要有,因为你这个抛出异常本身呢,它就代表终止了啊,终止了这一个方法说不需要return,那接着我们继续往下走。
11:06
就要讲如果现在这个没有空,就数据没有空,是不是根据刚才老师的分析,三步三步走,先把站点的数据取出来,Top减减,再返回这个值。是是这个逻辑吧,啊value value,好同学们,那现在呢,我们把这个逻辑简单的走一走,首先呢,先取得占顶的这个值。暂停的是先是top。对不对,先把暂停的值先保存起来,Top减减。Top简解,然后return value。好,这个泡泡这个操作咱们就写完了,还差一个方法,还差一个什么呢?显示站的情况,也就是说便利站。便利站。同学们,电力站我们要注意啊,站它是从。
12:02
从从占顶取的,所以说便利的时候,咱们不能从零开始变利,是要从占顶往下变利,能理解,所以说我们这个便利的时候呢,这个代码要注意怎么写,Public work list。来,我们来注意啊,这个时候便利呢,应该这样写。啊,注意我这儿提示大家就是电力时。便利时需要从站顶。站点开始显示,开始显示数据。没问题吧,好,现在的代码我们来玩一把。如果修还是要判断是不是为空,如果你现在为占已经为空了,那就怎么样啊,没有数据就无法编利,对吧,没有没占空,占空没有没有数据。没有数据好,那这直接就返回了,如果你这没有为空,是不是下面就可以变利了,怎么便利呢?For循环,注意啊,便利时需要从占顶开始显示数据,因此呢,我先把这个I置为top。
13:07
然后I怎么样大于等于零的情况下就可以去显示,那I减减不是I加加了,再说一遍,需要从站点开始显示数据。因此我是从站点开始走的,那拿到一个数据呢,我们把它打出来。同样我们进行一个简单的格式化的处理,那走先把它的索引打出来,再把它的值导出来,然后换行。好,那么它的这个D就是I,它的值呢,显然是sta。I。对不对,每打一个咱们换行输出了,好同学们,那关于站的这几个基本操作咱们就写完了,哪些操作呢,构造器。站满有了,站空有了,入站也有了,还有出站咱们也写了,便利站也写了,也就是说到此为止,我们一个用数组模拟站的代码就写完了。
14:06
写完了,大家看看根据刚才老师讲的思路能不能理解啊,那下面呢,我们就来进行一个简单测试,待会儿呢,咱们写一个菜单,那关于站的一个简单的一个测试和一个菜单呢,我们放到下一个视频去讲解。
我来说两句