介紹:佇列又稱為「先進先出」(fifo)線性表。限定插入操作只能在隊尾進行,而刪除操作只能在隊首進行
應用場景:排隊front:佇列頭,指向佇列的第乙個元素,初始值為0
rear:佇列尾,只想佇列的最後乙個元素的後乙個位置,所占用的位置作為約定(空乙個位置)初始值為0
maxsize:總長度初始值需建立物件時賦予
隊列為空的條件:rear==front
佇列滿的條件:(rear + 1) % maxsize == front
佇列中有效的資料個數 (rear + maxsize - front) % maxsize
建議畫兩個例子將值帶到公式中計算一下方便理解
空佇列示意圖:
隊列為空:0 == 0 結果為:true
佇列滿:(0+1) % 8 == 0 結果為:false
有效資料個數:(0 + 8 - 0) % 8 結果為:0
佇列中存滿的示意圖:
隊列為空:7 == 0 結果為:false
佇列滿:(7+1) % 8 == 0 結果為:true
有效資料個數:(7 + 8 - 0) % 8 結果為:7
此時佇列是從陣列下標為0的位置到下標為6的位置為有效元素
取出佇列中第乙個數並新增乙個數時:
隊列為空:0 == 1 結果為:false
佇列滿:(0 + 1) % 8 == 1 結果為:true
有效資料個數:(0 + 8 - 1) % 8 結果為:7
但此時佇列是從陣列下標為1的位置到下標為7的位置為有效元素
這樣就實現了環形佇列,使這個陣列可以重用
public
class
circinarrayqueuedemo
catch
(exception e)
break
;case
'h':
trycatch
(exception e)
break
;case
'e':
scanner.
close()
; loop =
false
;break;}
} system.out.
println
("程式退出!");
}}/** * 環形佇列
*/class
circinarray
//判斷佇列是否已滿
public
boolean
isfull()
//判斷佇列是否為空
public
boolean
isempty()
//新增資料到佇列
public
void
addqueue
(int value)
//新增資料到佇列
arr[rear]
= value;
//佇列尾後移
rear =
(rear +1)
% maxsize ;
}//資料出佇列
public
intgetqueue()
int temp = arr[front]
; front =
(front +1)
% maxsize;
return temp;
}public
intsize()
//顯示當前佇列資料
public
void
showqueue()
for(
int i = front; i < front +
size()
;i++)}
//顯示佇列頭,不取出資料
public
intheadqueue()
return arr[front];}
}
新手都能看懂的Dubbo!
1.dubbo架構 上述節點簡單說明 呼叫關係說明 1.服務容器負責啟動,載入,執行服務提供者。2.服務提供者在啟動時,向註冊中心註冊自己提供的服務。3.服務消費者在啟動時,向註冊中心訂閱自己所需的服務。4.註冊中心返回服務提供者位址列表給消費者,如果有變更,註冊中心將基於長連線推送變更資料給消費者...
小白都能看懂的block
首先說明一下,我自己也是乙個小白 這是我對block的一點認識或總結,有不對的地方,希望大家指出來 block就是乙個 塊,用來執行一小段程式的,通常我們定義乙個block 可以用它的基本模型,返回值型別 變數的名字 引數型別 例如 int myblock int 這就是定義了乙個block 這個變...
小白都能看懂的softmax詳解
softmax把一些輸入對映為0 1之間的實數,並且歸一化保證和為1,因此多分類的概率之和也剛好為1 或參考 小白都能看懂的softmax詳解 在機器學習尤其是深度學習中,softmax是個非常常用而且比較重要的函式,尤其在多分類的場景中使用廣泛。他把一些輸入對映為0 1之間的實數,並且歸一化保證和...