迴圈佇列的儲存設計實現(C語言版)

2021-08-20 05:49:34 字數 576 閱讀 9590

1.概念

為充分利用向量空間,克服順序儲存結構的"假溢位"現象的方法是:將向量空間想象為乙個首尾相接的圓環,並稱這種向量為迴圈向量。儲存在其中的佇列稱為迴圈佇列(circular queue)。這種迴圈佇列可以以單鏈表的方式來在實際程式設計應用中來實現。

迴圈佇列中,由於入隊時尾指標向前追趕頭指標;出隊時頭指標向前追趕尾指標,造成隊空和隊滿時頭尾指標均相等。因此,無法通過條件front==rear來判別佇列是"空"還是"滿"。使用求餘運算可以判斷佇列是否已滿。

基本操作:

/* 定義鍊錶佇列

*/定義結構體中front指示隊頭位置,rear指示隊尾位置,base指標用於申請空間並存放資料。

/* 初始化佇列

*/使用指標*base申請100個記憶體空間,front和rear分別為0,此時隊列為空

/* 判斷空或滿 

*/

迴圈佇列的實現(C語言版)

執行環境 vs2015 include include include 定義 typedef int elemtype typedef int status 定義常量的值 define ok 1 define error 0 define true 1 define false 0 define o...

佇列之迴圈佇列詳解(C語言版)

順序佇列在使用過程中容易出現虛假的滿狀態,為了解決這個問題,就產生了乙個較巧妙的方法,將順序佇列臆造為乙個環狀的空間,稱之為迴圈佇列。迴圈佇列中指標和佇列元素之間的關係不變,我們只需要利用模運算就可以很容易實現指標的迴圈移動。但是迴圈佇列中存在乙個問題,在迴圈佇列中只憑頭指標front等於尾指標re...

迴圈鍊錶(C語言版)

circlelinklist.h define ok 1 define error 0 typedef int status typedef int elemtype typedef struct cnode cnode typedef struct cnode clinklist status i...