| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 | type MyCircularQueue struct {	queue  []int	size   int	length int	beg    int	end    int}/** Initialize your data structure here. Set the size of the queue to be k. */func Constructor(k int) (queue MyCircularQueue) {	queue.queue = make([]int, k)	queue.size = k	return}/** Insert an element into the circular queue. Return true if the operation is successful. */func (this *MyCircularQueue) EnQueue(value int) bool {	if this.IsFull() {		return false	}	this.queue[this.end] = value	this.end = (this.end + 1) % this.size	this.length++	return true}/** Delete an element from the circular queue. Return true if the operation is successful. */func (this *MyCircularQueue) DeQueue() bool {	if this.IsEmpty() {		return false	}	this.beg = (this.beg + 1) % this.size	this.length--	return true}/** Get the front item from the queue. */func (this *MyCircularQueue) Front() int {	if this.IsEmpty() {		return -1	}	return this.queue[this.beg]}/** Get the last item from the queue. */func (this *MyCircularQueue) Rear() int {	if this.IsEmpty() {		return -1	}	return this.queue[(this.end+this.size-1)%this.size]}/** Checks whether the circular queue is empty or not. */func (this *MyCircularQueue) IsEmpty() bool {	return this.length == 0}/** Checks whether the circular queue is full or not. */func (this *MyCircularQueue) IsFull() bool {	return this.length == this.size}/** * Your MyCircularQueue object will be instantiated and called as such: * obj := Constructor(k); * param_1 := obj.EnQueue(value); * param_2 := obj.DeQueue(); * param_3 := obj.Front(); * param_4 := obj.Rear(); * param_5 := obj.IsEmpty(); * param_6 := obj.IsFull(); */
 |