最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java數(shù)據(jù)結(jié)構(gòu)基礎(chǔ):順序隊列和循環(huán)隊列

 更新時間:2021年08月01日 10:34:16   作者:去吧貓頭夜鷹  
下面小編就為大家分享一篇java隊列實現(xiàn)方法(順序隊列,循環(huán)隊列),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

隊列:

隊列是一種受限制的線性表

只允許在表的一端進行插入,另一端進行刪除

插入的一端稱作隊尾,刪除的一端稱作隊頭

具有先進先出的特性

順序隊列:

隊列底層數(shù)據(jù)采用數(shù)組存儲

設(shè)置隊頭指針front指向隊頭元素前一個位置,初始值為-1

設(shè)置隊尾指針rear指向隊尾元素,初始值為-1

判滿:rear == maxSize - 1

判空:rear == front

代碼實現(xiàn):

//順序隊列
public class ArrayQueue {
	private int maxSize;    //數(shù)組的最大容量
	private int front;        //隊頭指針
	private int rear;        //隊尾指針
	private int[] array;    //存放數(shù)據(jù)
	public ArrayQueue(int arrMaxSize) {
		maxSize = arrMaxSize;
		array = new int[maxSize];
		front = -1;        //指向隊頭的前一個位置
		rear = -1;        //指向隊尾
	}
	//判斷隊列是否滿
	public boolean isFull() {
		return rear == maxSize - 1;
	}
	//判斷隊列是否空
	public boolean isEmpty() {
		return rear == front;
	}
	//入隊
	public void addQueue(int n) {
		//判斷隊列是否滿
		if (isFull()) {
			System.out.println("隊列滿");
			return;
		}
		rear++;    //rear后移
		array[rear] = n;
	}
	//出隊
	public int getQueue() {
		//判斷隊列是否空
		if (isEmpty()) {
			throw new RuntimeException("隊列為空");
		}
		front++;    //front后移
		return array[front];
	}
	//取隊頭數(shù)據(jù)
	public int headQueue() {
		if (isEmpty()) {
			throw new RuntimeException("隊列為空");
		}
		return array[front + 1];
	}
	//輸出隊列所有數(shù)據(jù)
	public void showQueue() {
		//遍歷輸出
		if (isEmpty()) {
			System.out.println("隊列為空");
            return;
		}
		for (int i = 0; i < array.length; i++) {
			System.out.printf("array[%d] = %d\n", i, array[i]);
		}
	}
}

順序隊列存在假溢出現(xiàn)象,故使用循環(huán)隊列替代順序隊列

循環(huán)隊列:

隊列底層數(shù)據(jù)仍然采用數(shù)組存儲

為了便于判空和判滿,在數(shù)組中預(yù)留一個空間,認為只留下一個空間的時候隊列為滿

設(shè)置隊頭指針front指向隊頭元素,初始值為0

設(shè)置隊尾指針rear指向隊尾元素的后一個位置,初始值為0

判滿:(rear + 1) % maxSize == front

判空:rear == front

取得當前隊列有效數(shù)據(jù)個數(shù):(rear + maxSize - front) % maxSize

代碼實現(xiàn):

//循環(huán)隊列
public class CircleQueue {
	private int maxSize;    //數(shù)組的最大容量
	private int front;        //隊頭指針
	private int rear;        //隊尾指針
	private int[] array;    //存放數(shù)據(jù)
	public CircleQueue(int arrMaxSize) {
		maxSize = arrMaxSize;
		array = new int[maxSize];
		front = 0;        //指向隊頭的前一個位置
		rear = 0;        //指向隊尾
	}
	//判斷隊列是否滿
	public boolean isFull() {
		return (rear + 1) % maxSize == front;
	}
	//判斷隊列是否空
	public boolean isEmpty() {
		return rear == front;
	}
	//入隊
	public void addQueue(int n) {
		//判斷隊列是否滿
		if (isFull()) {
			System.out.println("隊列滿");
			return;
		}
		array[rear] = n;
		rear = (rear + 1) % maxSize;
	}
	//出隊
	public int getQueue() {
		//判斷隊列是否空
		if (isEmpty()) {
			throw new RuntimeException("隊列為空");
		}
		//保存front對應(yīng)的值
		int value = array[front];
		front = (front + 1) % maxSize;
		return value;
	}
	//取隊頭數(shù)據(jù)
	public int headQueue() {
		if (isEmpty()) {
			throw new RuntimeException("隊列為空");
		}
		return array[front];
	}
	//獲取當前隊列有效數(shù)據(jù)個數(shù)
	public int size() {
		return (rear + maxSize - front) % maxSize;
	}
	//輸出隊列所有數(shù)據(jù)
	public void showQueue() {
		//遍歷輸出
		if (isEmpty()) {
			System.out.println("隊列為空");
            return;
		}
		//從front開始遍歷
		for (int i = front; i < front + size(); i++) {
			System.out.printf("array[%d] = %d\n", i % maxSize, array[i % maxSize]);
		}
	}
}

總結(jié)

本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • SpringBoot整合MongoDB實現(xiàn)文檔存儲功能

    SpringBoot整合MongoDB實現(xiàn)文檔存儲功能

    MongoDB是可以應(yīng)用于各種規(guī)模的企業(yè)、各個行業(yè)以及各類應(yīng)用程序的開源數(shù)據(jù)庫,本文將結(jié)合MongoDB和SpringBoot實現(xiàn)文檔存儲功能,需要的可以參考下
    2024-12-12
  • 淺析Spring?Cloud?Gateway中的令牌桶限流算法

    淺析Spring?Cloud?Gateway中的令牌桶限流算法

    這篇文章主要為大家淺析了Spring?Cloud?Gateway中的令牌桶限流算法原理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2022-02-02
  • java獲取昨天日期字符串的方法

    java獲取昨天日期字符串的方法

    這篇文章主要介紹了java獲取昨天日期字符串的方法,涉及java針對日期與時間的運算與轉(zhuǎn)換等相關(guān)操作技巧,需要的朋友可以參考下
    2016-08-08
  • java如何使用正則表達式限制特殊字符的個數(shù)

    java如何使用正則表達式限制特殊字符的個數(shù)

    這篇文章主要介紹了java如何使用正則表達式限制特殊字符的個數(shù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • 基于java web獲取網(wǎng)頁訪問次數(shù)代碼實例

    基于java web獲取網(wǎng)頁訪問次數(shù)代碼實例

    這篇文章主要介紹了基于java web獲取網(wǎng)頁訪問次數(shù)代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02
  • SpringBoot整合SpringCloud的過程詳解

    SpringBoot整合SpringCloud的過程詳解

    SpringCloud專注于為典型的用例和擴展機制提供良好的開箱即用體驗,在介紹SpringCloud默認使用的注冊中心前,先給大家介紹下分布式系統(tǒng)的三個指標,具體內(nèi)容詳情跟隨小編一起看看吧
    2021-09-09
  • mybatis-plus enum實現(xiàn)枚舉類型自動轉(zhuǎn)換

    mybatis-plus enum實現(xiàn)枚舉類型自動轉(zhuǎn)換

    本文主要介紹了mybatis-plus enum實現(xiàn)枚舉類型自動轉(zhuǎn)換,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07
  • java基礎(chǔ)詳解之數(shù)據(jù)類型知識點總結(jié)

    java基礎(chǔ)詳解之數(shù)據(jù)類型知識點總結(jié)

    這篇文章主要介紹了java基礎(chǔ)詳解之數(shù)據(jù)類型知識點總結(jié),文中有非常詳細的代碼示例,對正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有很大的幫助,需要的朋友可以參考下
    2021-04-04
  • Mybatis使用useGeneratedKeys獲取自增主鍵的方法

    Mybatis使用useGeneratedKeys獲取自增主鍵的方法

    這篇文章主要給大家介紹了關(guān)于Mybatis使用useGeneratedKeys獲取自增主鍵的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用Mybatis具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • 使用@CachePut?更新數(shù)據(jù)庫和更新緩存

    使用@CachePut?更新數(shù)據(jù)庫和更新緩存

    這篇文章主要介紹了使用@CachePut?更新數(shù)據(jù)庫和更新緩存方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12

最新評論

梁山县| 庆阳市| 元谋县| 德江县| 德令哈市| 察雅县| 铜鼓县| 含山县| 太湖县| 安达市| 五家渠市| 青田县| 五台县| 芷江| 舟曲县| 乌拉特后旗| 平原县| 绥宁县| 石家庄市| 泾川县| 蓬莱市| 云林县| 蒙阴县| 漯河市| 德化县| 左权县| 长葛市| 扶沟县| 滨海县| 双流县| 台东市| 凤城市| 昌都县| 灵石县| 石台县| 绵竹市| 高雄市| 伊春市| 金乡县| 罗田县| 安庆市|