要求:設計你的迴圈佇列實現。 迴圈佇列是一種線性資料結構,其操作表現基於 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...
單據資料結構設計
單據資料結構設計 單據形式 企業中的表單 請假單 加班單等等 大多數完成兩個功能 一 審批 二 產生業務記錄。一般情況下,會根據表單上欄位所處的位置,將其設計為單據頭 單據體那樣一對多的關係。通乙個業務可能表單的形式不盡相同,以加班單為例 有一人多天加班 有多人一天加班,有多人多天的加班。不論怎麼變...