LeetCode 622 設計迴圈佇列

2021-09-20 15:21:50 字數 2064 閱讀 3041

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

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

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

示例:

mycircularqueue circularqueue = new mycircularqueue(3); // 設定長度為 3

circularqueue.enqueue(1);  // 返回 true

circularqueue.enqueue(2);  // 返回 true

circularqueue.enqueue(3);  // 返回 true

circularqueue.enqueue(4);  // 返回 false,佇列已滿

circularqueue.rear();  // 返回 3

circularqueue.isfull();  // 返回 true

circularqueue.dequeue();  // 返回 true

circularqueue.enqueue(4);  // 返回 true

circularqueue.rear();  // 返回 4

用乙個陣列data來實現。成員變數除了這個陣列外,還有4個整形變數:size用來記錄環形佇列的最大長度,head用來記錄當前隊首位置,tail用來記錄當前隊尾位置,num用來記錄佇列中當前有多少個元素。往環形佇列中插入元素是往隊尾的後乙個位置插入元素,當隊尾在陣列的最右邊時要插入元素的話,就在陣列的最左邊插入元素,之後隊尾也就在陣列的最左邊了。在環形佇列中刪除元素是刪除隊首的元素,隨著不斷地刪除元素,隊首會從陣列的最左邊一直到最右邊,然後又回到最左邊。將隊首的位置移動之後,就完成了刪除的操作,原來位置的值不用修改。返回隊首元素就是返回head位置的值。返回隊尾元素就是返回tail位置的值。判斷佇列的空和滿就是判斷num的值是多大就可以了。

class mycircularqueue 

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

bool enqueue(int value)

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

bool dequeue()

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

int front()

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

int rear()

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

bool isempty()

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

bool isfull()

};/**

* your mycircularqueue object will be instantiated and called as such:

* mycircularqueue* obj = new mycircularqueue(k);

* bool param_1 = obj->enqueue(value);

* bool param_2 = obj->dequeue();

* int param_3 = obj->front();

* int param_4 = obj->rear();

* bool param_5 = obj->isempty();

* bool param_6 = obj->isfull();

*/

Leetcode 622 設計迴圈佇列

設計你的迴圈佇列實現。迴圈佇列是一種線性資料結構,其操作表現基於 fifo 先進先出 原則並且隊尾被連線在隊首之後以形成乙個迴圈。它也被稱為 環形緩衝器 迴圈佇列的乙個好處是我們可以利用這個佇列之前用過的空間。在乙個普通佇列裡,一旦乙個佇列滿了,我們就不能插入下乙個元素,即使在佇列前面仍有空間。但是...

leetcode 622 設計迴圈佇列

題目鏈結 設計你的迴圈佇列實現。迴圈佇列是一種線性資料結構,其操作表現基於 fifo 先進先出 原則並且隊尾被連線在隊首之後以形成乙個迴圈。它也被稱為 環形緩衝器 迴圈佇列的乙個好處是我們可以利用這個佇列之前用過的空間。在乙個普通佇列裡,一旦乙個佇列滿了,我們就不能插入下乙個元素,即使在佇列前面仍有...

LeetCode622 設計迴圈佇列

設計你的迴圈佇列實現。迴圈佇列是一種線性資料結構,其操作表現基於 fifo 先進先出 原則並且隊尾被連線在隊首之後以形成乙個迴圈。它也被稱為 環形緩衝器 迴圈佇列的乙個好處是我們可以利用這個佇列之前用過的空間。在乙個普通佇列裡,一旦乙個佇列滿了,我們就不能插入下乙個元素,即使在佇列前面仍有空間。但是...