队列作为一种先进先出的数据结构,用顺利表(数组)实现;
1.队列结构;
typedef struct myqueue
{
int front;
int rear;
int maxSize;
int*arr;
}Q;
2.isempty
bool isEmpty()
{
return front == rear;
}
3.isfull
bool isFull() {
return ((rear + 1) % maxSize) == front;
}
4.入队
bool enQueue(int value) {
if (isFull()) return false;
arr[rear] = value;
rear = (rear + 1) % maxSize;
return true;
}
5.出队
bool deQueue() {
if (isEmpty()) return false;
front = (front + 1) % maxSize;
return true;
}
6.取队头元素;
int Front() {
if (isEmpty()) return -1;
return arr[front];
}
7.取队尾元素;
int Rear() {
if (isEmpty()) return -1;
return arr[(rear-1+maxSize) % maxSize];
}
8.重点
判断队列是否满了是牺牲了一个空间,用((rear + 1) % maxSize) == front,来标记,为了与判空冲突,这里可以用还可以用标记和统计队列个数来实现!