public class MyCircularQueue
{
private
int size;
int head;
int tail;
int[] data;
public MyCircularQueue(int k)
{
Array.Resize<int>(ref data, k);
head = -1;
tail = -1;
size = k;
}
/** Insert an element into the circular queue. Return true if the operation is successful. */
public bool EnQueue(int value)
{
if (IsFull())
return false;
if (IsEmpty())
{
head = 0;
}
tail = (tail + 1) % size;
data[tail] = value;
return true;
}
/** Delete an element from the circular queue. Return true if the operation is successful. */
public bool DeQueue()
{
if (IsEmpty())
return false;
if (head == tail)
{
head = -1;
tail = -1;
return true;
}
head = (head + 1) % size;
return true;
}
/** Get the front item from the queue. */
public int Front()
{
if (IsEmpty())
return -1;
return data[head];
}
/** Get the last item from the queue. */
public int Rear()
{
if (IsEmpty())
return -1;
return data[tail];
}
/** Checks whether the circular queue is empty or not. */
public bool IsEmpty()
{
return head == -1;
}
/** Checks whether the circular queue is full or not. */
public bool IsFull()
{
return ((tail + 1) % size) == head;
}
}
C# 学习笔记(六)----- 设计循环队列
最新推荐文章于 2023-01-21 10:08:33 发布