顺序队列基本操作
//队列的基本操作(顺序队列)
#define maxsize 1000
typedef int datatype;
typedef struct Queue {
datatype Queue[maxsize];
int front;
int rear;
}SeqQueue;
//队列初始化,将队列初始化为空队列
void InitQueue(SeqQueue* SQ) {
SQ->front = SQ->rear;
}
//判断队列为空
int IsEmpty(SeqQueue* SQ) {
if (SQ->front == SQ.rear)
return 1;
else
return 0;
}
//判断队列是否为满
int IsFull(SeqQueue* SQ) {
if (SQ->front - SQ->rear == maxsize)
return 1;
else
return 0;
}
//入队,将元素data插入到队列SQ中
void EnterQueue(SeqQueue* SQ, DataType data) {
if (SQ->front - SQ->rear == maxsiez)
{
printf("队列已满");
return 0;
}
else {
SQ->Queue[SQ->rear] = data;
SQ->rear=SQ->rear+1;
}
}
//获取队首元素
int GetHead(SeqQueue* SQ, DataType* data) {
if (SQ->front == SQ->rear)
return 0;
else
return *data=SQ->Queue[SQ->front];
}
//清空队列
void ClearQueue(SeqQueue* SQ) {
SQ->front = SQ->rear;
}
//打印队列中的与元素
void PrintQueue(SeqQueue* SQ) {
if (SQ->front == SQ->rear)
return;
for (int i = SQ->front; i < rear; i++) {
printf("%-3d", SQ->Queue[i]);
}
printf("\n");
}
总结:
1.当队列SQ->front==SQ->rear时,队列为空;
2.当队列SQ->rear-SQ->frontmaxsize时,队列满;
3.SQ->rear在队列最后一个元素的下一位;