資料結構 設計迴圈佇列

2021-08-29 02:08:59 字數 2222 閱讀 3036

要求:設計你的迴圈佇列實現。 迴圈佇列是一種線性資料結構,其操作表現基於 fifo(先進先出)原則並且隊尾被連線在隊首之後以形成乙個迴圈。它也被稱為「環形緩衝器」。

迴圈佇列的乙個好處是我們可以利用這個佇列之前用過的空間。在乙個普通佇列裡,一旦乙個佇列滿了,我們就不能插入下乙個元素,即使在佇列前面仍有空間。但是使用迴圈佇列,我們能使用這些空間去儲存新的值。

你的實現應該支援如下操作:

分析:

按理說,佇列更適合用鍊錶來完成,但是設計迴圈佇列是,要注意乙個問題,就是它得留乙個空間,用來區分該佇列是空還是滿,實現時,如果要用鍊錶的話,好要開闢新的節點等,比較麻煩,所以相對而言,迴圈對列更適合用陣列來實現。具體實現**如下:

typedef struct  mycircularqueue;

/** initialize your data structure here. set the size of the queue to be k. */

mycircularqueue* mycircularqueuecreate(int k)

/** insert an element into the circular queue. return true if the operation is successful. */

bool mycircularqueueenqueue(mycircularqueue* obj, int value)

obj->queue[obj->rear]=value;

obj->rear++;

if(obj->rear==obj->k+1)

return true;

}/** delete an element from the circular queue. return true if the operation is successful. */

bool mycircularqueuedequeue(mycircularqueue* obj)

obj->front++;//刪除

if(obj->front==obj->k+1)//當front走到k+1時,把front置為0,讓它構成環形

return true;

}/** get the front item from the queue. */

int mycircularqueuefront(mycircularqueue* obj)

else

}/** get the last item from the queue. */

int mycircularqueuerear(mycircularqueue* obj)

if(obj->rear==0)

else

}/** checks whether the circular queue is empty or not. */

bool mycircularqueueisempty(mycircularqueue* obj)

else

}/** checks whether the circular queue is full or not. */

bool mycircularqueueisfull(mycircularqueue* obj)

else

}void mycircularqueuefree(mycircularqueue* obj)

/** * your mycircularqueue struct will be instantiated and called as such:

* struct mycircularqueue* obj = mycircularqueuecreate(k);

* bool param_1 = mycircularqueueenqueue(obj, value);

* bool param_2 = mycircularqueuedequeue(obj);

* int param_3 = mycircularqueuefront(obj);

* int param_4 = mycircularqueuerear(obj);

* bool param_5 = mycircularqueueisempty(obj);

* bool param_6 = mycircularqueueisfull(obj);

* mycircularqueuefree(obj);

*/

資料結構設計

mfc提供的集合類來管理文件資料,mfc提供幾種處理物件陣列的類,如集合類,這些集合類表現為下列兩種風格 1.模板為基的集合類 2.非模板為基的集合類 每個集合類又進一步按他的元素型別和他的形加以區分。集合的形指明在集合每如何組織資料,mfc提供3種通用集合類的形 array 陣列,有次序性,可以動...

迴圈結構設計

c語言有2種常用的迴圈結構,分別是for迴圈和while迴圈。其中while迴圈使用的頻率相對較多,下面我們先看for迴圈。for迴圈 for 這是乙個死迴圈,何為死迴圈,就是永不停止的迴圈。比如for 分割線 int i for i 0 i 10 i 該語句表示,迴圈列印10次hello worl...

單據資料結構設計

單據資料結構設計 單據形式 企業中的表單 請假單 加班單等等 大多數完成兩個功能 一 審批 二 產生業務記錄。一般情況下,會根據表單上欄位所處的位置,將其設計為單據頭 單據體那樣一對多的關係。通乙個業務可能表單的形式不盡相同,以加班單為例 有一人多天加班 有多人一天加班,有多人多天的加班。不論怎麼變...