java中如何通過數(shù)組實(shí)現(xiàn)隊(duì)列_第1頁(yè)
已閱讀5頁(yè),還剩6頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、java中如何通過數(shù)組實(shí)現(xiàn)隊(duì)列1、隊(duì)列本身是有序列表,若用法數(shù)組的結(jié)構(gòu)來存儲(chǔ)隊(duì)列的數(shù)據(jù),則隊(duì)列數(shù)組的聲明如上圖,其中maxsize是隊(duì)列的最大容量;2、隊(duì)列的輸入、輸出分離先前后端處理,因此需要front和rear兩個(gè)變量分離記錄隊(duì)列前后端的下標(biāo),其會(huì)隨著數(shù)據(jù)輸入而轉(zhuǎn)變;3、將數(shù)據(jù)存入的隊(duì)列為queue&quot;:、對(duì)空:rear=front;、隊(duì)滿:rear=maxsize-1;、當(dāng)尾指針rear<maxsize-1時(shí),則將數(shù)據(jù)存入rear所指的數(shù)組中。視頻教程共享:java視頻教程詳細(xì)實(shí)現(xiàn)代碼如下:(1)、推斷隊(duì)列是否滿(2)、推斷隊(duì)列是否為空(3)、添加數(shù)據(jù)到隊(duì)列中(4)

2、、獵取隊(duì)列的數(shù)據(jù),出隊(duì)列;(5)、顯示當(dāng)前隊(duì)列數(shù)據(jù);(6)、顯示隊(duì)列的頭數(shù)據(jù),注重不是取出數(shù)據(jù);示例如下:packagecom.ycx.queue;importjava.util.scanner;publicclassarrayqueuedemopublicstaticvoidmain(stringargs)/測(cè)試/創(chuàng)建一個(gè)隊(duì)列arrayqueuequeue=newarrayqueue(3);charkey=&39;&39;/接受用戶輸入scannerinput=newscanner(system.in);booleanflag=true;/控制循環(huán)默認(rèn)死循環(huán)/輸出菜單whil

3、e(flag)system.out.println(&quot;s(show),顯示隊(duì)列&quot;);system.out.println(&quot;e(exit),退出隊(duì)列&quot;);system.out.println(&quot;a(add),添加數(shù)據(jù)到隊(duì)列&quot;);system.out.println(&quot;g(get),從隊(duì)列取出數(shù)據(jù)&quot;);system.out.println(&quot;h(head),查看隊(duì)列頭的數(shù)據(jù)&quot;);key=input.next().cha

4、rat(0);/接受收一個(gè)字符switch(key)case&39;s&39;:queue.showqueue();break;case&39;a&39;:system.out.println(&quot;輸一個(gè)數(shù)&quot;);intval=input.nextint();queue.addqueue(val);break;case&39;g&39;:/取出數(shù)據(jù)由于辦法里面拋出了異樣所以這里需要捕捉tryintres=queue.getqueue();system.out.printf(&quot;取出的數(shù)據(jù)為%dn&a

5、mp;quot;,res);catch(exceptione)system.out.println(e.getmessage();break;case&39;h&39;:tryintres=queue.headqueue();system.out.printf(&quot;隊(duì)列頭的數(shù)據(jù)為%dn&quot;,res);catch(exceptione)system.out.println(e.getmessage();break;case&39;e&39;:/退出程序input.close();/關(guān)閉flag=false;break;default

6、:break;system.out.println(&quot;程序退出&quot;);/一、用法數(shù)組模擬隊(duì)列-編寫一個(gè)arrayqueue類classarrayqueueprivateintmaxsize;/表示數(shù)組的最大容量privateintfront;/隊(duì)列頭privateintrear;/隊(duì)列尾privateintarr;/該數(shù)組用于存放數(shù)據(jù),模擬隊(duì)列/創(chuàng)建隊(duì)列的構(gòu)造器publicarrayqueue(intarrmaxsize)maxsize=arrmaxsize;arr=newintmaxsize;/初始化數(shù)組front=-1;/指向隊(duì)列頭部,分析出front是指

7、向隊(duì)列頭的前一個(gè)位置有效數(shù)據(jù)的位置rear=-1;/指向隊(duì)列尾,指向隊(duì)列尾的數(shù)據(jù)(即就是隊(duì)列最后一個(gè)位置)/1.推斷隊(duì)列是否滿publicbooleanisfull()returnrear=maxsize-1;/由于rear是從-1開頭的(假如不理解就看筆記上的圖)/2.推斷隊(duì)列是否為空publicbooleanisempty()returnrear=front;/3.添加數(shù)據(jù)到隊(duì)列中publicvoidaddqueue(intn)/推斷隊(duì)列是否為滿if(isfull()system.out.println(&quot;隊(duì)列已滿,不能加入數(shù)據(jù)&quot;);rear+;/rea

8、r后移arrrear=n;/也可以挺直寫成arr+rear:rear先加再取值/4.獵取隊(duì)列的數(shù)據(jù),出隊(duì)列publicintgetqueue()if(isempty()thrownewruntimeexception(&quot;隊(duì)列空,不能取數(shù)據(jù)&quot;);front+;/front后移由于front指向的是前一個(gè)元素(front=-1)returnarrfront;/5.顯示當(dāng)前隊(duì)列數(shù)據(jù)publicvoidshowqueue()/遍歷if(isempty()system.out.println(&quot;當(dāng)前隊(duì)列為空&quot;);return;for(inti=0;i<arr.length;i+)system.out.printf(&quot;arr%d=%dn&quot;,i,arri);/格式化輸出/6.顯示隊(duì)列的頭數(shù)據(jù),注重不是取出數(shù)據(jù)publicintheadqueue()if(isempty()thrownewruntimeexception(&quot;隊(duì)列為空&quot;);returna

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論