国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

順序隊(duì)列詳解(C語言實(shí)現(xiàn))

2023-07-12 17:45 作者:解學(xué)武  | 我要投稿

順序隊(duì)列指的是用順序表模擬實(shí)現(xiàn)的隊(duì)列存儲(chǔ)結(jié)構(gòu)。

我們知道,隊(duì)列具有以下兩個(gè)特點(diǎn):

  1. 數(shù)據(jù)從隊(duì)列的一端進(jìn),從另一端出;

  2. 數(shù)據(jù)的入隊(duì)和出隊(duì)遵循"先進(jìn)先出"的原則;

在順序表的基礎(chǔ)上,只要元素進(jìn)出的過程遵循以上兩個(gè)規(guī)則,就能實(shí)現(xiàn)隊(duì)列結(jié)構(gòu)。

順序隊(duì)列的具體實(shí)現(xiàn)

通常情況下,我們采用 C 語言中的數(shù)組實(shí)現(xiàn)順序表。既然用順序表模擬實(shí)現(xiàn)隊(duì)列,必然要先定義一個(gè)足夠大的數(shù)組。不僅如此,為了遵守隊(duì)列中數(shù)據(jù)從 "隊(duì)尾進(jìn),隊(duì)頭出" 且 "先進(jìn)先出" 的規(guī)則,還需要定義兩個(gè)變量(top 和 rear)分別記錄隊(duì)頭和隊(duì)尾的具體位置,如圖?1 所示:

順序隊(duì)列實(shí)現(xiàn)示意圖
圖 1 順序隊(duì)列實(shí)現(xiàn)示意圖


初始狀態(tài)下,順序隊(duì)列中沒有任何元素,因此 top 和 rear 重合,都位于 a[0] 處。

實(shí)現(xiàn)入隊(duì)

在圖 1 的基礎(chǔ)上,當(dāng)有新元素入隊(duì)時(shí),依次執(zhí)行以下兩步操作:

  1. 將新元素存儲(chǔ)在 rear 記錄的位置;

  2. 更新 rear 的值(rear+1),記錄下一個(gè)空閑空間的位置,為下一個(gè)新元素入隊(duì)做好準(zhǔn)備。

例如,在圖 1 基礎(chǔ)上將?{1,2,3,4}?用順序隊(duì)列存儲(chǔ)的實(shí)現(xiàn)操作如圖 2 所示:


圖 2 數(shù)據(jù)進(jìn)順序隊(duì)列的過程實(shí)現(xiàn)示意圖


入隊(duì)操作的 C 語言實(shí)現(xiàn)代碼如下:

實(shí)現(xiàn)出隊(duì)

當(dāng)有元素出隊(duì)時(shí),根據(jù)“先進(jìn)先出”的原則,目標(biāo)元素以及在它之前入隊(duì)的元素要依次從隊(duì)頭出隊(duì)。

出隊(duì)操作的實(shí)現(xiàn)方法很簡單,就是更新 top 的值(top+1)。例如,在圖 2 基礎(chǔ)上,順序隊(duì)列中元素逐個(gè)隊(duì)列的過程如圖 3 所示:

數(shù)據(jù)出順序隊(duì)列的過程示意圖
圖 3 數(shù)據(jù)出順序隊(duì)列的過程示意圖

注意,雖然數(shù)組中仍保存著 1、2、3、4 這些元素,但隊(duì)列中的元素是依靠 top 和 rear 來判別的,因此圖 3b) 顯示的隊(duì)列中確實(shí)不存在任何元素。

出隊(duì)操作的 C 語言實(shí)現(xiàn)代碼為:

順序隊(duì)列的完整實(shí)現(xiàn)代碼

使用順序表模擬實(shí)現(xiàn)順序隊(duì)列的 C 語言代碼為:

程序輸出結(jié)果:

出隊(duì)元素:1
出隊(duì)元素:2
出隊(duì)元素:3
出隊(duì)元素:4
隊(duì)列已空,出隊(duì)執(zhí)行失敗

順序隊(duì)列的缺陷

圖 2b) 是所有數(shù)據(jù)入隊(duì)成功的示意圖,圖 3b) 是所有數(shù)據(jù)出隊(duì)后的示意圖,對(duì)比兩張圖會(huì)發(fā)現(xiàn),top 和 rear 重合位置變成了? a[4] 而不再是 a[0]。

也就是說,在元素不斷入隊(duì)、出隊(duì)的過程中,順序隊(duì)列會(huì)整體向順序表的尾部移動(dòng)。整個(gè)實(shí)現(xiàn)方案存在的缺陷是:

  • 順序隊(duì)列前面的空閑空間無法再被使用,會(huì)造成空間浪費(fèi);

  • 當(dāng)順序隊(duì)列移動(dòng)至順序表尾部時(shí),即便順序表中有空閑空間,新元素也無法成功入隊(duì),我們習(xí)慣將這種現(xiàn)象稱為“假溢出”。

下篇文章,我會(huì)教大家順序隊(duì)列的另一種實(shí)現(xiàn)方案,可以徹底彌補(bǔ)以上兩個(gè)缺陷。

順序隊(duì)列詳解(C語言實(shí)現(xiàn))的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
安宁市| 定日县| 广汉市| 临武县| 勃利县| 墨竹工卡县| 宝丰县| 胶州市| 松原市| 红桥区| 惠水县| 湖口县| 扎囊县| 克什克腾旗| 阿拉尔市| 碌曲县| 自治县| 米脂县| 岳阳市| 北宁市| 晋城| 咸丰县| 桃园市| 平顶山市| 休宁县| 潞西市| 丰镇市| 大竹县| 沧州市| 竹溪县| 吴忠市| 朝阳县| 安仁县| 阳信县| 吉木乃县| 黄山市| 湖北省| 松溪县| 许昌县| 梅州市| 康定县|