一菩混、數(shù)組循環(huán)隊(duì)列
簡(jiǎn)述一下思想忿墅,該循環(huán)隊(duì)列用數(shù)組實(shí)現(xiàn)扁藕,數(shù)組大小初始化為5(MaxSize),有頭索引(front)和尾索引(rear)疚脐。
1.初始狀態(tài)亿柑,頭尾索引指向一起,都為0棍弄。此時(shí)隊(duì)列為空望薄,判空的依據(jù)就是頭尾索引是否相等,相等就為空呼畸。
2.當(dāng)入隊(duì)時(shí)式矫,先根據(jù)rear入隊(duì),而后將rear后移一位役耕,即尾索引其實(shí)一直指向隊(duì)列最后一個(gè)元素的下一位采转。根據(jù)這一點(diǎn)和前一點(diǎn),可知當(dāng)數(shù)組的大小為5時(shí)瞬痘,該隊(duì)列最多可容納四個(gè)元素故慈,因?yàn)槿绻b入第五個(gè)元素,rear將會(huì)繞一圈又重新回到front的位置框全,這時(shí)候我們就無(wú)法判斷是隊(duì)空還是隊(duì)滿了察绷。
3.這時(shí)候就要考慮數(shù)組越界問(wèn)題了,畢竟不能讓尾索引一直后移津辩,所以要用到一個(gè)小公式(rear+1)%MaxSize拆撼,這個(gè)公式可以確保尾索引一直在0~4的位置循環(huán)。即如果當(dāng)前尾索引位置是4喘沿,那么再移動(dòng)就是(4+1)%5=0闸度,便又指向0的位置了。入隊(duì)時(shí)注意判隊(duì)滿蚜印,隊(duì)滿條件(rear+1)%MaxSize == front;
4.出隊(duì)時(shí)莺禁,先將front指向位置的元素取出,而后front后移窄赋,后移時(shí)依舊采用公式(front+1)%MaxSize哟冬。最后注意判隊(duì)空,隊(duì)空條件(front==rear)
(1)隊(duì)列定義
(2)方法聲明
(3)方法實(shí)現(xiàn)
(4)測(cè)試
二忆绰、鏈表普通隊(duì)列(無(wú)頭節(jié)點(diǎn)鏈表)
思路與普通的鏈表沒(méi)有太大差異浩峡,利用頭指針和尾指針,入隊(duì)時(shí)采用尾插法错敢,出隊(duì)時(shí)從頭部刪除翰灾。