隊(duì)列是一種先進(jìn)先出的線性表典阵,它只允許在表的一端進(jìn)行插入,而在另一端刪除元素浸颓。在隊(duì)列中物臂,允許插入數(shù)據(jù)一端成為隊(duì)尾(rear),允許刪除的那一端稱(chēng)為隊(duì)頭(front)猾愿。
隊(duì)列的基本操作:
順序隊(duì)列
順序隊(duì)列利用一組地址連續(xù)的存儲(chǔ)單元依次存放自隊(duì)首到隊(duì)尾的數(shù)據(jù)元素鹦聪,同時(shí)由于隊(duì)的操作的特殊性,還必須附兩個(gè)位置指針front和rear來(lái)動(dòng)態(tài)地指示隊(duì)首元素和隊(duì)尾元素在順序隊(duì)列中的位置蒂秘。通常front=rear表示空隊(duì)列泽本。
隊(duì)列同堆棧一樣也有上溢和下溢現(xiàn)象。以外姻僧,隊(duì)列中還存在“假溢出”現(xiàn)象规丽。所謂“假溢出”是指在入隊(duì)和出隊(duì)操作中,頭尾指針不斷增加而不減小或只減小而不增加撇贺,致使被刪除元素的空間無(wú)法重新利用赌莺,最后造成隊(duì)列中有空閑空間,但是不能夠插入元素松嘶,也不能夠刪除元素的現(xiàn)象艘狭。
鏈?zhǔn)疥?duì)列: 采用鏈表作為存儲(chǔ)結(jié)構(gòu)實(shí)現(xiàn)的隊(duì)列。為便于操作,采用帶頭結(jié)點(diǎn)的單鏈表實(shí)現(xiàn)隊(duì)列巢音。因?yàn)殛?duì)列的插入和刪除操作位置不同遵倦,所以鏈表需要設(shè)置表頭指針和表尾指針?lè)謩e指隊(duì)首和隊(duì)尾。
循環(huán)隊(duì)列 :? 假設(shè)向量的空間是m,只要在入出隊(duì)列時(shí)官撼,將隊(duì)首和隊(duì)尾的指針對(duì)m做求模運(yùn)算即可實(shí)現(xiàn)隊(duì)首和隊(duì)尾指針的循環(huán)梧躺,即隊(duì)首和隊(duì)尾指針的取值范圍是0到m-1之間。
判斷隊(duì)空和隊(duì)滿的方法: