Java用數(shù)組實(shí)現(xiàn)循環(huán)隊(duì)列的示例
復(fù)習(xí)了下數(shù)據(jù)結(jié)構(gòu),用Java的數(shù)組實(shí)現(xiàn)一下循環(huán)隊(duì)列。
隊(duì)列的類
//循環(huán)隊(duì)列 class CirQueue{ private int QueueSize; private int front; private int rear; private int[] queueList ; public CirQueue(int QueueSize){ this.QueueSize = QueueSize; queueList = new int[QueueSize]; front = 0; rear = 0; } //獲取隊(duì)列頭元素 public int getQueueElement(){ //如果隊(duì)列不為空,返回隊(duì)頭元素,否則拋出異常提示隊(duì)列為空 int element = -1; if(!isEmpty()){ element = queueList[front]; return element; } else { System.out.println("隊(duì)列為空"); return -1; } } //出隊(duì) public int deQueue(){ int element = -1; if(!isEmpty()){ element = queueList[front]; front =(front+1)%QueueSize; return element; } else { System.out.println("隊(duì)列為空"); return -1; } } //入隊(duì) public void enQueue(int element){ //如果隊(duì)列未滿,添加元素到隊(duì)尾,否則提示隊(duì)列已滿 if(!isFull()){ queueList[rear] = element ; rear = (rear+1)%QueueSize; } else { System.out.println("隊(duì)列已滿"); } } //判斷隊(duì)列是否為空 public boolean isEmpty(){ boolean b = false; if(rear == front) b = true; return b; } //判斷隊(duì)列是否已滿 public boolean isFull(){ boolean b = false; if((rear+1)%QueueSize == front) b = true; return b; } }
創(chuàng)建對(duì)象并測(cè)試
package com.test; import java.util.*; public class StructTest { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub //新建并初始化存儲(chǔ)空間為3的循環(huán)隊(duì)列(方便判斷隊(duì)滿條件,浪費(fèi)一個(gè)數(shù)組空間) CirQueue cirQueue = new CirQueue(4); //入隊(duì)3個(gè)元素 cirQueue.enQueue(1); cirQueue.enQueue(2); cirQueue.enQueue(3); //獲取隊(duì)頭元素,獲取 但不改變隊(duì)列 int temp = cirQueue.getQueueElement(); System.out.println(temp); //出隊(duì) 獲取隊(duì)頭元素,并且隊(duì)頭指針往后移一位 temp = cirQueue.deQueue(); System.out.println(temp); //再次獲取隊(duì)頭元素 temp = cirQueue.getQueueElement(); System.out.println(temp); } }
輸出:
1 1 2
以上這篇Java用數(shù)組實(shí)現(xiàn)循環(huán)隊(duì)列的示例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)于Java Spring三級(jí)緩存和循環(huán)依賴的深入理解
對(duì)于循環(huán)依賴,我相信讀者無(wú)論只是聽(tīng)過(guò)也好,還是有過(guò)了解也好,至少都有所接觸。但是我發(fā)現(xiàn)目前許多博客對(duì)于循環(huán)依賴的講解并不清楚,都提到了Spring的循環(huán)依賴解決方案是三級(jí)緩存,但是三級(jí)緩存每一級(jí)的作用是什么,很多博客都沒(méi)有提到,本篇文章帶你深入了解2021-09-09Java手動(dòng)創(chuàng)建線程池代碼實(shí)例
這篇文章主要介紹了Java手動(dòng)創(chuàng)建線程池代碼實(shí)例,FixedThreadPool或者SingleThreadPool,允許的請(qǐng)求隊(duì)列長(zhǎng)度為Integer.MAX_VALUE,可能會(huì)堆積大量的請(qǐng)求,從而導(dǎo)致OOM,需要的朋友可以參考下2023-12-12Java消息隊(duì)列JMS實(shí)現(xiàn)原理解析
這篇文章主要介紹了Java消息隊(duì)列JMS實(shí)現(xiàn)原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03spring?webClient配置及使用簡(jiǎn)單代碼示例
WebClient是Spring框架5.0引入的基于響應(yīng)式編程模型的HTTP客戶端,它提供一種簡(jiǎn)便的方式來(lái)處理HTTP請(qǐng)求和響應(yīng),支持異步和非阻塞式的請(qǐng)求和響應(yīng)處理,下面這篇文章主要給大家介紹了關(guān)于spring?webClient配置及使用的相關(guān)資料,需要的朋友可以參考下2024-03-03Java編程實(shí)現(xiàn)統(tǒng)計(jì)數(shù)組中各元素出現(xiàn)次數(shù)的方法
這篇文章主要介紹了Java編程實(shí)現(xiàn)統(tǒng)計(jì)數(shù)組中各元素出現(xiàn)次數(shù)的方法,涉及java針對(duì)數(shù)組的遍歷、比較、運(yùn)算等相關(guān)操作技巧,需要的朋友可以參考下2017-07-07javacv開(kāi)發(fā)詳解之調(diào)用本機(jī)攝像頭視頻
這篇文章主要介紹了javacv開(kāi)發(fā)詳解之調(diào)用本機(jī)攝像頭視頻,對(duì)javacv感興趣的同學(xué),可以參考下2021-04-04關(guān)于在Java中如何使用yaml的實(shí)例
這篇文章主要介紹了關(guān)于在Java中如何使用yaml的實(shí)例,YAML是一種輕量級(jí)的數(shù)據(jù)序列化格式。它以易讀、易寫(xiě)的文本格式表示數(shù)據(jù),支持列表、字典等各種數(shù)據(jù)結(jié)構(gòu),被廣泛應(yīng)用于配置文件、數(shù)據(jù)傳輸協(xié)議等領(lǐng)域,需要的朋友可以參考下2023-08-08springboot數(shù)據(jù)訪問(wèn)和數(shù)據(jù)視圖的使用方式詳解
這篇文章主要為大家介紹了springboot數(shù)據(jù)訪問(wèn)和數(shù)據(jù)視圖的使用方式詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06