日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java循环队列_Java 循环队列的实现

發布時間:2025/3/11 java 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java循环队列_Java 循环队列的实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

隊列概念

隊列(Queue)是限定只能在一端插入、另一端刪除的線性表。允許刪除的一端叫做隊頭(front),允許插入的一端叫做隊尾(rear),沒有元素的隊列稱為“空隊列”。

隊列具有先進先出(FIFO)的特性。

普通順序隊列存在的問題

在普通順序隊列中,入隊的操作就是先將尾指針rear右移一個單位,然后將元素值賦值給rear單位。出隊時,則是頭指針front后移一個單位。像這樣進行了一定數量的入隊和出隊操作后,可能會出現這樣的情況:

尾指針rear已指到數組的最后有一個元素,即rear==MaxLen-1,此時若再數組的前面部分可能還有很多閑置空間,即這種溢出并非是真的沒有可用的存儲空間,故稱這種溢出現象為“假溢出”。顯然,必須要解決這一塊假溢出的問題,否則順序隊列就沒有太多使用價值。

循環隊列

循環隊列的存儲結構,頭、尾指針都和普通順序隊列相同。不同的只是將隊列視為“環狀結構”,即data[0]為緊接著data[MaxLen-1]的單元,為相鄰的元素,首位成為一個環。結構如下:

(來自:百科)

代碼實現

全局變量:定義隊列長度

static int MaxLen;

循環隊列基本數據結構的實現:

static classmyQueue{intfront;intrear;intqueueList[];publicmyQueue() {//TODO Auto-generated constructor stub

queueList=new int[MaxLen];

front=0;

rear=0;

}

}

判空函數

public booleanisEmpty() {if(front==rear){return true;

}return false;

}

判滿函數

public booleanisFull(){if(((rear+1)%MaxLen)==front){return true;

}else{return false;

}

}

取隊頭元素

public void queueFront(intgetFront){if(isEmpty()==false){

getFront=queueList[(front+1)%MaxLen];

}else{

System.out.println("ERROR:Queue is Empty");return;

}

}

入隊

public void enQueue(intenData) {if(isFull()==false){

rear=(rear+1)%MaxLen;this.queueList[rear]=enData;

}else{

System.out.println("ERROR:Queue is Full");return;

}

}

出隊

public voidoutQueue() {if(isEmpty()==false){

front=(front+1)%MaxLen;

}else{

System.out.println("ERROR:Queue is Empty");return;

}

}

總結

以上是生活随笔為你收集整理的java循环队列_Java 循环队列的实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。