此文件用于创建一个顺序队列,出队,入队,判断队空,判断队满等操作
代码如下:
#include <stdio.h>
#include <stdlib.h>
#define TYPE int
struct Squeue {
TYPE *arr;
TYPE front, rear;
};
//创建队列
Squeue *create(int n) {
struct Squeue *sq = (struct Squeue *)malloc(sizeof(struct Squeue));
sq->arr = (TYPE *)malloc(sizeof(TYPE)*n);//数组大小
sq->front = 0;
sq->rear = 0;
return sq;
}
//判断队满(这里采用牺牲一个存储单元来实现,约定队头指针在队尾指针的下一个位置作为队满的标志)
bool isFull(Squeue *sq,int maxSize) {
return (sq->rear + 1) % maxSize == sq->front;
}
//判断队空
bool isEmpty(Squeue *sq) {
return sq->front == sq->rear;
}
//判断队列中元素个数
int count(Squeue *sq,int maxSize) {
return (sq->rear - sq->front + maxSize) % maxSize;
}
//入队
bool enQueue(Squeue *sq,int data,int maxSize) {
if (isFull(sq,maxSize)) return false;
sq->arr[sq->rear] = data;
sq->rear = (sq->rear + 1) % maxSize;
return true;
}
//出队
bool deQueue(Squeue *sq,int &data,int maxSize) {
if (isEmpty(sq)) return false;
data = sq->arr[sq->front];
sq->front = (sq->front + 1) % maxSize;
return true;
}
人生最重要的不是努力,不是奋斗,而是抉择。