2.環(huán)形隊(duì)列
計(jì)算正常隊(duì)列的有效數(shù)字
正常數(shù)列就是我們之前學(xué)到的,數(shù)值只能一次性不能重新循環(huán)的版本,在那個(gè)版本里面計(jì)算有效數(shù)值非常簡單
于是我們可以想象一個(gè)無法循環(huán)的循環(huán)隊(duì)列,這聽起來很怪,但是我們可以通過簡化過后的循環(huán)隊(duì)列來算值
有效數(shù)值 = rear ? front?
但是這里注意了,我們的rear并非真的是指向我們的最后一個(gè)元素,而是指向最后一個(gè)元素的后一個(gè)位置,所以公式應(yīng)該變?yōu)?/strong>
有效數(shù)值=rear+1?front
當(dāng)我們的索引超出隊(duì)列,使用百分號(hào)讓他回來
使用%可以讓那些超過的數(shù)字回到隊(duì)列里面來
比如當(dāng)我們的rear已經(jīng)指向了隊(duì)列.length(實(shí)際上這是一個(gè)虛擬的位,
實(shí)際上指向 - 隊(duì)列.length - 1),這已經(jīng)沒有下一位,于是我們要想辦法讓他回到我們的隊(duì)列開頭
我們可以看到當(dāng)我們隊(duì)列長度為5的時(shí)候,不管我們的數(shù)值有多大,最終都無法超過5,請(qǐng)看下方GIF


標(biāo)簽: