環(huán)形隊(duì)列原理 數(shù)據(jù)結(jié)構(gòu)中循環(huán)隊(duì)列用取模運(yùn)算實(shí)現(xiàn)怎么理解?。?/h1>
數(shù)據(jù)結(jié)構(gòu)中循環(huán)隊(duì)列用取模運(yùn)算實(shí)現(xiàn)怎么理解?。磕憧梢援嬕粋€(gè)數(shù)組,給它加上數(shù)字,取數(shù)字,試試看這是最直觀的數(shù)據(jù)結(jié)構(gòu),怎么理解?就像你周圍的事情一樣,你不需要理解。在你說母語之前,你會(huì)考慮每一句話嗎?簡單的
數(shù)據(jù)結(jié)構(gòu)中循環(huán)隊(duì)列用取模運(yùn)算實(shí)現(xiàn)怎么理解???
你可以畫一個(gè)數(shù)組,給它加上數(shù)字,取數(shù)字,試試看這是最直觀的數(shù)據(jù)結(jié)構(gòu),怎么理解?就像你周圍的事情一樣,你不需要理解。在你說母語之前,你會(huì)考慮每一句話嗎?簡單的數(shù)據(jù)結(jié)構(gòu)就是模仿現(xiàn)實(shí)中的事物。你排隊(duì)過嗎?循環(huán)隊(duì)列相當(dāng)于循環(huán)隊(duì)列??傊?,你可以自己畫一個(gè)圖或一個(gè)數(shù)組,你可以在嘗試時(shí)看到它。不要畫得太大。如果你畫3-7個(gè)網(wǎng)格,如果你畫100個(gè)網(wǎng)格,你就不用做實(shí)驗(yàn)了
一個(gè)循環(huán)隊(duì)列就是一個(gè)封閉的隊(duì)列。如果是使用數(shù)組創(chuàng)建的隊(duì)列,則會(huì)有指向隊(duì)列第一個(gè)和最后一個(gè)的指針。這兩個(gè)指針通過函數(shù)在隊(duì)列中連續(xù)移動(dòng)。當(dāng)隊(duì)列末尾的指針指向最后一個(gè)時(shí),它將使用函數(shù)(在書中)指向前面。因此,隊(duì)列總是可以指向隊(duì)列的末尾,當(dāng)我們下去的時(shí)候,會(huì)有前驅(qū)和后繼。
如果是指針,它會(huì)更生動(dòng),因?yàn)樗淖詈笠粋€(gè)節(jié)點(diǎn)總是指向最后一個(gè)節(jié)點(diǎn)。因此,第一元素和最后元素有先驅(qū)和后繼者,而我不會(huì)談?wù)撝虚g的其他元素。
數(shù)據(jù)結(jié)構(gòu)中如何理解:循環(huán)隊(duì)列的每一個(gè)元素都有一個(gè)前驅(qū)和后繼?
1. 循環(huán)隊(duì)列的優(yōu)點(diǎn):可以有效地利用資源。當(dāng)使用數(shù)組實(shí)現(xiàn)隊(duì)列時(shí),如果不移動(dòng)隊(duì)列,隨著數(shù)據(jù)的不斷讀寫,隊(duì)列將是偽滿的。即尾部數(shù)組已滿,但頭部數(shù)組仍為空;循環(huán)隊(duì)列也是一個(gè)數(shù)組,但它在邏輯上連接數(shù)組的頭部和尾部以形成一個(gè)循環(huán)隊(duì)列。當(dāng)數(shù)組尾部已滿時(shí),需要判斷數(shù)組頭部是否為空,并繼續(xù)存儲(chǔ)數(shù)據(jù)。
2. 循環(huán)隊(duì)列的缺點(diǎn):在循環(huán)隊(duì)列中,當(dāng)進(jìn)入隊(duì)列時(shí),尾部指針追上頭部指針;當(dāng)離開隊(duì)列時(shí),頭部指針追上尾部指針,導(dǎo)致隊(duì)列為空或滿時(shí),頭部-尾部指針相等。因此,不可能通過條件front==real來判斷隊(duì)列是空的還是滿的。
3. 擴(kuò)展知識(shí):為了充分利用向量空間,克服“虛溢出”現(xiàn)象的方法是把向量空間想象成一個(gè)從頭到尾相連的環(huán),并稱這種向量為循環(huán)向量。存儲(chǔ)在其中的隊(duì)列稱為循環(huán)隊(duì)列。