java數(shù)組實(shí)現(xiàn)循環(huán)隊(duì)列示例介紹
從頂部進(jìn)去數(shù)據(jù),從底部出來(lái)數(shù)據(jù),用數(shù)組實(shí)現(xiàn)隊(duì)列,但是下面這個(gè)隊(duì)列,只能進(jìn)行一次存數(shù)值,取數(shù)值,不夠完善。
import java.util.Scanner; public class ArrayQueueDemo { public static void main(String[]args){ //定義隊(duì)列大小maxsize ArrayQueue arrayQueue=new ArrayQueue(3); Scanner scanner=new Scanner(System.in); char key=' '; boolean leap=true; while(leap){ System.out.println("s(show):顯示隊(duì)列"); System.out.println("e(exit):退出程序"); System.out.println("h(head):顯示頭條數(shù)據(jù)"); System.out.println("a(add):添加數(shù)據(jù)"); System.out.println("g(get):從程序中取出隊(duì)列"); System.out.println("請(qǐng)輸入一個(gè)數(shù)"); key= scanner.next().charAt(0); switch (key){ case 's': arrayQueue.showQueue(); break; case 'h': System.out.printf("頭數(shù)據(jù)為%d",arrayQueue.showHead()); break; case 'a': System.out.println("輸入添加數(shù)據(jù)"); int data= scanner.nextInt(); arrayQueue.addQueue(data); break; case 'g': arrayQueue.getQueue(); break; case 'e': leap=false; break; default: break; } } } } class ArrayQueue{ private int maxsize;//隊(duì)列大小 private int rear; private int front; private int [] arry; public ArrayQueue(int maxsize1){ maxsize=maxsize1; arry=new int[maxsize]; front =-1; rear=-1; } //判斷隊(duì)列是否滿 public boolean isFull(){ return rear==maxsize-1; } //增加數(shù)據(jù) public void addQueue(int data){ if (isFull()){ System.out.println("隊(duì)列滿了"); } else{ arry[rear+1]=data; rear++; } } //顯示數(shù)據(jù) public void showQueue(){ for (int i = 0; i < arry.length; i++) { System.out.println(); System.out.printf("%d",arry[i]); } } //是否空 public boolean isEmpety(){ return rear== front; } //顯示頭數(shù)據(jù) public int showHead() { if (isEmpety()) { throw new RuntimeException("隊(duì)列是空的"); } return arry[front +1]; } public int getQueue(){ if (isEmpety()){ throw new RuntimeException("隊(duì)列是空"); } System.out.printf("去除一個(gè)隊(duì)列為%d",arry[++front]); arry[front]=0; return 0; } }
循環(huán)隊(duì)列,可以進(jìn)行數(shù)據(jù)插入和取出,是上個(gè)普通隊(duì)列的增強(qiáng)版。上個(gè)隊(duì)列只能使用一次的情況被解決了
import java.util.Scanner; public class CircleArrayQueueDemo { public static void main(String[] args){ //定義隊(duì)列大小maxsize cirCleArray cirCleArray=new cirCleArray(3);//隊(duì)列大小是三,但是有效數(shù)據(jù)是兩個(gè) Scanner scanner=new Scanner(System.in); char key=' '; boolean leap=true; while(leap){ System.out.println("s(show):顯示隊(duì)列"); System.out.println("e(exit):退出程序"); System.out.println("h(head):顯示頭條數(shù)據(jù)"); System.out.println("a(add):添加數(shù)據(jù)"); System.out.println("g(get):從程序中取出隊(duì)列"); System.out.println("請(qǐng)輸入一個(gè)數(shù)"); key= scanner.next().charAt(0); switch (key){ case 's': cirCleArray.showCircleArray(); break; case 'h': System.out.printf("頭數(shù)據(jù)為%d",cirCleArray.showHead()); break; case 'a': cirCleArray.addQueue(); break; case 'g': cirCleArray.getQueue(); break; case 'e': leap=false; break; default: break; } } } } class cirCleArray{ private int maxsize; private int front; private int rear; private int [] arry; Scanner scanner=new Scanner(System.in); public cirCleArray(int maxsize1){ this.maxsize=maxsize1; arry=new int[maxsize]; front=0; rear=0; } //顯示隊(duì)列 public void showCircleArray(){ if (isEmpty()){ System.out.println("隊(duì)列為空"); } else{ for (int i =front; i < front+size(); i++) { System.out.printf("arry[%d]=%d\n",i % maxsize,arry[i % maxsize]); } } } public int size(){ return (rear+maxsize-front)%maxsize; } //隊(duì)列為空 public boolean isEmpty(){ return front==rear; } //隊(duì)列為滿 public boolean isFull(){ return (rear+1)%maxsize==front; } //添加數(shù)據(jù) public void addQueue(){ if (isFull()){ System.out.printf("隊(duì)列滿了"); } else{ System.out.printf("輸入添加的數(shù)據(jù)"); int data=scanner.nextInt(); arry[rear]=data; if (rear<maxsize-1){ rear++; } else { rear=(rear+1)%maxsize; } } } //取出數(shù)據(jù) public void getQueue(){ if (isEmpty()){ System.out.println("隊(duì)列是空的"); } else{ System.out.printf("取出數(shù)據(jù)%d",arry[front]); // arry[front]=0; // front++; front=(front+1)%maxsize; } } //顯示頭數(shù)據(jù) public int showHead() { if (isEmpty()) { throw new RuntimeException("隊(duì)列是空的"); } return arry[front]; } }
到此這篇關(guān)于java數(shù)組實(shí)現(xiàn)循環(huán)隊(duì)列示例介紹的文章就介紹到這了,更多相關(guān)java數(shù)組循環(huán)隊(duì)列內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
IDEA打包的兩種方式及注意事項(xiàng)說(shuō)明
這篇文章主要介紹了IDEA打包的兩種方式及注意事項(xiàng)說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04Mybatis聯(lián)合查詢的實(shí)現(xiàn)方法
本文主要介紹了 Mybatis聯(lián)合查詢的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01intellij idea 啟動(dòng)tomcat 1099端口被占用的解決
這篇文章主要介紹了intellij idea 啟動(dòng)tomcat 1099端口被占用的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09Java實(shí)現(xiàn)人機(jī)對(duì)戰(zhàn)猜拳游戲
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)人機(jī)對(duì)戰(zhàn)猜拳游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-07-07將一個(gè)數(shù)組按照固定大小進(jìn)行拆分成數(shù)組的方法
下面小編就為大家?guī)?lái)一篇將一個(gè)數(shù)組按照固定大小進(jìn)行拆分成數(shù)組的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-11-11基于紅黑樹(shù)插入操作原理及java實(shí)現(xiàn)方法(分享)
下面小編就為大家分享一篇基于紅黑樹(shù)插入操作原理及java實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2017-12-12IDEA打開(kāi)項(xiàng)目所有東西都在報(bào)紅報(bào)錯(cuò)的解決方案
這篇文章主要給大家介紹了關(guān)于IDEA打開(kāi)項(xiàng)目所有東西都在報(bào)紅報(bào)錯(cuò)的三個(gè)解決方案,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用idea具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2023-06-06