java循環的概念_Java數據結構之循環隊列簡單定義與用法示例

本文實例講述了Java數據結構之循環隊列簡單定義與用法。分享給大家供大家參考,具體如下:

一、概述:

1、原理:

與普通隊列的區別在于循環隊列添加數據時,如果其有效數據end == maxSize - 1(最大空間)的話,end指針又移動到-1的位置

刪除數據時,如果head== maxSize時 head指針移動到0的位置

2、示例圖:

910c18a0fd14317ebc78af7a2cdc9bc7.png

二、實現代碼:

package com.java.queue;

/**

* @描述 對列

* @項目名稱 Java_DataStruct

* @包名 com.java.stack

* @類名 Queue

* @author chenlin

* @version 1.0

* @SVN $Rev$

*/

public class CycleQueue {

private long[] arr;

private int maxSize;// 最大空間

private int len;// 有效長度

private int head;// 隊頭

private int end;// 隊尾

public CycleQueue(int size) {

this.maxSize = size;

this.arr = new long[maxSize];

this.len = 0;

this.head = 0;

this.end = -1;

}

/**

* 從隊尾插入數據

*

* @param value

*/

public void insert(long value) {

//如果滿了,為什么是maxSize - 1 ,因為從-1開始

if (end == maxSize - 1) {

end = -1;

}

arr[++end] = value;

len++;

}

/**

* 從隊頭移除數據

*/

public long remove() {

long result = arr[head++];

if (head == maxSize) {

head = 0;

}

len--;

return result;

}

/**

* 判斷是否為空

*

* @return

*/

public boolean isEmpty() {

return (len == 0);

}

/**

* 判斷是否滿了

*

* @return

*/

public boolean isFull() {

return (len == maxSize);

}

/**

* 獲得隊列的有效長度

*

* @return

*/

public int size() {

return len;

}

public static void main(String[] args) {

CycleQueue queue = new CycleQueue(50);

queue.insert(22);

queue.insert(33);

queue.insert(44);

queue.insert(534);

queue.insert(21);

queue.insert(55);

System.out.println("腳本之家測試結果:");

while (!queue.isEmpty()) {

System.out.print(queue.remove() + " ");

}

System.out.println();

queue.insert(33);

queue.insert(13);

queue.insert(23);

while (!queue.isEmpty()) {

System.out.print(queue.remove() + " ");

}

}

}

運行結果:

ae54a5501e10ed6ed66829e5ddd6d5f6.png

希望本文所述對大家java程序設計有所幫助。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/371125.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/371125.shtml
英文地址,請注明出處:http://en.pswp.cn/news/371125.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Unrecognized option: -jrockit

weblogic報錯: starting weblogic with Java version: Unrecognized option: -jrockit Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit. Starting WLS with line: /data/jdk1.8.0_45/bin/java -jroc…

51nod 1105 第K大的數

基準時間限制:1 秒 空間限制:131072 KB 分值: 40 難度:4級算法題 數組A和數組B,里面都有n個整數。數組C共有n^2個整數,分別是A[0] * B[0],A[0] * B[1] ......A[1] * B[0],A[1] * B[1]......A[n - 1] * B[n - 1]&#x…

在Tomcat上設置和使用Apache Solr

前一陣子花了一點時間來玩Solr,但立即被我們可以在一些更大的數據集上獲得的性能所震撼。 這是我的一些初始設置和配置學習信息,也許可以幫助某人啟動它并更快地運行。 首先在Windows上進行設置。 下載并解壓縮Apache Tomcat和Solr,然后將其復…

sass變量

sass變量用法 1、sass變量必須以$符開頭,后面緊跟著變量名 2、變量值和變量名之間就需要使用冒號(:)分隔開(就像CSS屬性設置一樣) 3、如果值后面加上!default則表示默認值 默認變量 sass的默認變量:僅需要在值后面加上!defaul…

西安4年java多少時間_西安學習java一般要多久

線程小n行的任務/任務執的數單個量為間隔執行池大所需時間時間,西安學習的配置,西安學習行定行池務的務執c配在執注置任方法時任上標,下解行調問題務的方度任有以異步決辦采用法:上述式執。比如、般要多本名(套接套接5套t地地節點…

js 遞歸函數的使用及常用函數

1.遞歸函數的使用: 公園里有一堆桃子,猴子每天吃掉一半,挑出一個壞的扔掉,第6天的時候發現還剩1個桃子,問原來有多少個桃子 var peache;function peaches(n) { if (n 6) { peache 1; } else { …

redis分布式鎖-SETNX實現

轉自:https://my.oschina.net/u/1995545/blog/366381 Redis有一系列的命令,特點是以NX結尾,NX是Not eXists的縮寫,如SETNX命令就應該理解為:SET if Not eXists。這系列的命令非常有用,這里講使用SETNX來實現…

sql java驅動程序_Microsoft SQL Server JDBC 驅動程序支持矩陣

本頁包含 Microsoft SQL Server JDBC 驅動程序的支持矩陣和支持生命周期策略。Microsoft JDBC 驅動程序支持生命周期矩陣和策略Microsoft 支持生命周期 (MSL) 策略提供了與 Microsoft 產品的支持生命周期有關的可預測透明信息。 自驅動程序發布之日起,JDBC 驅動程序…

使用直接內存時可以更快

總覽 使用直接內存不能保證提高性能。 考慮到它增加了復雜性,除非有充分的理由使用它,否則應避免使用它。 塞爾吉奧奧利維拉(Sergio Oliveira Jr)的這篇出色文章表明,這不僅僅是使用直接內存來提高性能的問題&#x…

POJ 3977 折半枚舉

鏈接: http://poj.org/problem?id3977 題意: 給你n個數,n最大35,讓你從中選幾個數,不能選0個,使它們和的絕對值最小 如果有一樣的,取個數最小的 題解: np難題,但是因為…

java踩坑記

1.String 相等 稍微有點經驗的程序員都會用equals比較而不是用 ,但用equals就真的安全了嗎,看下面的代碼 user.getName().equals("xiaoming"); 有經驗的老司機很快就能看到問題,如果user.getName()為null,就會拋出空指針異常&#…

java taken_java-是否有正確的方法在slf4j中傳遞參數?

第三變種是最好的。實際上,第一種情況是通過StringBuilder進行的字符串連接。第二和第三種情況相同。他們需要將整數值裝箱到Integer(或其他Object),然后創建一個數組來打包它們。在我的機器上進行的簡單測試表明,如果不執行日志記錄&#xf…

html常用小知識

請求重定向&#xff1a;加載頁面之后&#xff0c;除了用js做重定向之外&#xff0c;我們還可以直接用<meta>標簽做重定向。 1 <meta http-equiv"refresh" content"5;urlhttp://www.baidu.com" /> 5秒后跳轉 超鏈接&#xff1a;在當前的iframe…

MyEclipse快捷鍵大全【轉】

-------------------------------------MyEclipse 快捷鍵1(CTRL)-------------------------------------Ctrl1 快速修復CtrlD: 刪除當前行 CtrlQ 定位到最后編輯的地方 CtrlL 定位在某行 CtrlO 快速顯示 OutLine CtrlT 快速顯示當前類的繼承結構 CtrlW 關閉當前Editer Ct…

根據您的命令-命令設計模式

命令設計模式是一種廣為人知的設計模式&#xff0c;它屬于行為設計模式&#xff08;“四人幫”的一部分&#xff09;。 顧名思義&#xff0c;它與應用程序中的動作和事件有關。 問題陳述&#xff1a; 假設有一個網頁將在其中包含多個菜單的情況。 編寫此代碼的一種方法是使條件…

用js和jQuery做輪播圖

Javascript或jQuery做輪播圖 css樣式 <style> a{ text-decoration:none; } .naver{ width: 100%; position:relative; }.images{position:relative;width: 100%;height: 400px; } .images img{position:absolute;left: 0;top: 0;width: 100%;height: 400px;opacity: 0;fi…

w3school前端教程合集

有關前端開發的w3c教程合集。 http://caibaojian.com/w3school/ 地圖ajax教程Canvas教程CSS教程CSS3教程CSS3選擇器CSS參考手冊DHTML教程HTML教程HTML5教程HTML5音頻教程HTML DOM教程JavaScript教程jQuery教程jQuery Ajax教程jQuery事件jQuery操作jQuery選擇器jQuery遍歷json教…

【開發調試】谷歌瀏覽器中調試移動網頁和測試網速下頁面效果

、 今天有幸給大家分享一下谷歌瀏覽器針對移動網頁測試的技巧&#xff0c;主要是最近做個微信公共號網站。所以就要對頁面測試拉。移動網頁我們最長測得就是各種手機大小的頁面效果和出現網絡問題的效果展示。 今天就簡單分享下在谷歌瀏覽器測試頁面的適配和網速限制展示。…

拼多多分享好友砍價Java實現_拼多多砍價怎么分享到朋友圈 砍價發到微信朋友圈方法...

拼多多是一款電商社交的共享式購物平臺&#xff0c;現在還推出了砍價的活動&#xff0c;只要邀請好友砍價&#xff0c;你就以最低的價格購買商品&#xff0c;還可以可能是免費拿到&#xff0c;那么今天小編就給大家講講如何將自己的砍價信息分享到微信朋友圈。首先下載手機拼多…

通過6個簡單的步驟在Windows上運行Apache Hive

注意 &#xff1a;您需要安裝cygwin才能運行本教程&#xff0c;因為Hadoop&#xff08;Hive需要&#xff09;需要cygwin才能在Windows上運行。 至少&#xff0c;系統中必須存在Basic&#xff0c;Net&#xff08;OpenSSH&#xff0c;tcp_wrapper軟件包&#xff09;和與安全相關的…