C 實現迴圈順序佇列(佇列)

2021-08-25 01:51:14 字數 1562 閱讀 7736

佇列同棧相對,前者為先進先出(first in first in)。

順序隊裡中,使用陣列儲存資料,基本原理同順序線性表和順序棧。由於使用陣列,所以必須事先定義陣列的最大容量maxsize,使用front表示隊頭位置(最先入元素),使用rear表示隊尾元素(最後入元素),這樣每進入乙個元素,rear要自加一次,每取出乙個元素,front也要自加1,這樣的話,rear或front很快就會到達maxsize,無法再新增新的元素。為了避免這種情況出現,使用迴圈機制,即,若rear到達maxsize-1的位置時,如果還需要繼續新增的話,rear重新變為0.這樣,判斷佇列已滿的條件是,(rear + 1) % maxsize == front。

做如下規定:

1.空佇列時,有rear=front=-1,要求這是充要條件,即滿足rear=front=-1就是空佇列,如果佇列中沒有元素,則要求,rear=front=-1。注意,不能靠rear=front來判斷是否為空佇列,因為當加入第乙個元素的時候,rear=front=0,相等不是空佇列的充分條件,還必須是rear和front都等於-1才行。

如果是向空佇列中新增元素,則必須從0索引開始,即rear=front=0。

2.新增元素時,必須判斷目前的rear與maxsize的關係,如果rear=maxsize-1,則rear要重新從0開始。

3.元素出佇列時,必須判斷front與maxsize和rear的關係,並依此修改front的值。修改後,如果rear+1=front,則表明此時佇列中沒有元素,必須按照1的要求,設定rear=front=-1。

using system; using system.collections.generic; using system.linq; using system.text; namespace queue //迴圈順序佇列類 class cirseqqueue: iqueueds set } public t this[int i]// 唯讀 } public int frontpointer set } public int rearpointer set } public cirseqqueue():this(20)//陣列預設容量20 public cirseqqueue(int size) #region iqueueds成員 public int getlength() public bool isempty()//不能僅憑相等判斷,還必須都等於-1。當向佇列新增第乙個要素時,有rear=front=0,顯然這種情況不是空佇列。 public bool isfull() public void in(t t) if (this.isempty())//如果是向空佇列新增資料,則front和rear都設定為0 else else } } public t out() else else if (this.intrearpointer + 1 == this.intfrontpointer)//如果front比rear大1個,表明佇列中已經沒有資料,此時要其設定為空佇列,即 return t; } } public t getfront() return this.tdata[this.intrearpointer]; } #endregion } class program console.readline(); } } }

迴圈佇列 順序佇列(C )

佇列 queue 是一種限定訪問位置的線性變。他允許在表的一端插入,在另一端刪除。這個和計算機排程策略中的先來先服務fcfs first come first served 是一樣的。佇列中可以插入的一端為隊尾 rear 允許刪除的一端稱為隊頭 front 佇列也分為兩種,一種是用陣列的儲存表示,一...

迴圈佇列(順序佇列)的實現

迴圈佇列 順序佇列 的實現 include include include include define n 6 定義資料型別 typedef int datatype t 定義結構體 typedef structsequeue t sequeue t sq 建立乙個空的佇列 sequeue t s...

資料結構 5 迴圈佇列 佇列的順序表示和實現

語言 c 編譯環境 visual c 6.0 迴圈佇列 佇列的順序表示和實現 include define ok 1 define error 0 define overflow 2 status是函式返回值型別,其值是函式結果狀態 typedef int status 自定義資料型別別名 type...