#include<stdio.h>
#include<stdlib.h>
#define MaxSize 5//定义最大可以放的个数(MaxSize - 1 个)
typedef int ElemType;
typedef struct{
ElemType data[MaxSize];//注意存放的元素最多为MaxSize - 1个,因为这样有利于后续判断循环链表是不是满了
int front,rear;
}SqQueue;
//初始化队列
void InitQueue(SqQueue &Q){
Q.front = Q.rear = 0;
}
//判断队列是否为空
bool IsEmpty(SqQueue Q){
//最开始front和rear都指向同一个位置此时表示为空
if (Q.rear == Q.front){
printf("该队列为空\n");
return true;
}
else{
printf("Q不为空\n");
return false;
}
}
//插入队列
bool EnQueue(SqQueue &Q,ElemType x){
//因为队列中最多可放Maxsize - 1 个元素,所以rear加1在%Maxsize 等于front时,表示队列满了
if((Q.rear + 1) % MaxSize == Q.front){
printf("该队列已满,插入失败\n");
return false;
}
//Q.data[rear++] = x;这种写不行,因为rear会超过MaxSize
Q.data[Q.rear] = x;
Q.rear = (Q.rear + 1) % MaxSize;
printf("插入成功\n");
return true;
}
//删除元素
bool DeQueue(SqQueue &Q,ElemType &x){
if (Q.rear == Q.front)//为空表则不能删除
return false;
x = Q.data[Q.front];//保存被删除的元素
Q.front = (Q.front + 1) % MaxSize;//头节点往后移动一位
return true;
}
int main(){
SqQueue Q;
InitQueue(Q);
bool ret;
ElemType ele;
ret = IsEmpty(Q);
EnQueue(Q,3);
EnQueue(Q,4);
EnQueue(Q,5);
EnQueue(Q,6);
EnQueue(Q,7);
DeQueue(Q,ele);
return 0;
}
队列(数组实现)
最新推荐文章于 2024-07-15 17:15:24 发布