LeetCode622 設計迴圈佇列

2022-06-27 10:15:12 字數 2180 閱讀 7240

設計你的迴圈佇列實現。 迴圈佇列是一種線性資料結構,其操作表現基於 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

//

章節 - 佇列和棧

//一、佇列:先入先出的資料結構

//1.設計迴圈佇列

/*演算法思想:

在迴圈佇列中,我們使用乙個陣列和兩個指標(head 和 tail)。 head 表示佇列的起始位置,tail 表示佇列的結束位置。

*///

演算法實現:

class

mycircularqueue

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

*/bool enqueue(int value)

if (isempty())

tail = (tail + 1) %size;

data[tail] =value;

return

true

; }

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

*/bool

dequeue()

if (head == tail)

head = (head + 1) %size;

return

true

; }

/** get the front item from the queue.

*/int

front()

return

data[head];

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

*/int

rear()

return

data[tail];

}/** 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 先進先出 原則並且隊尾被連線在隊首之後以形成乙個迴圈。它也被稱為 環形緩衝器 迴圈佇列的乙個好處是我們可以利用這個佇列之前用過的空間。在乙個普通佇列裡,一旦乙個佇列滿了,我們就不能插入下乙個元素,即使在佇列前面仍有空間。但是...

leetcode 622 設計迴圈佇列

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