</pre><pre name="code" class="cpp"># include<cstdio>
# include<cstdlib>
# define maxsize 6
using namespace std;
typedef int Elementype;
typedef struct node{
int date[maxsize];
int front;
int rear;
}Queue;
bool Init(Queue *q){
q->front=q->rear=0;
return true;
}
bool IsEmpty(Queue *q){
if(q->rear == q->front)
return true;
else
return false;
}
bool IsFull(Queue *q){
if((q->rear + 1) % maxsize == q->front)
return true;
else
return false;
}
bool PushQueue(Queue *q,Elementype x){
if(IsFull(q)) return false;
else {
q->date[q->rear] = x;
q->rear = (q->rear + 1) % maxsize;
return true;
}
}
bool OutQueue(Queue *q,Elementype *x){
if(IsEmpty(q)) return false;
else {
*x = q->date[q->front];
q->front=(q->front + 1) % maxsize;
return true;
}
}
int number(Queue *q){
return((q->rear - q->front + maxsize) % maxsize);
}
int main(){
int i;
Queue q;
Init(&q);
Elementype x;
for(i=1;i<=5;i++){
if(PushQueue(&q,i))
printf("进队列成功 : %d\n",i);
else
printf("进队列失败\n");
}
printf("队列中元素的个数 :%d\n",number(&q));
printf("队列是否为空 :%d\n",IsEmpty(&q));
printf("队列是否满 :%d\n",IsFull(&q));
printf("-------------------------\n\n");
printf("出队列元素依次 :");
for(i=0;i<5;i++){
OutQueue(&q,&x);
printf("%d ",x);
}
printf("\n");
printf("队列是否为空 :%d\n",IsEmpty(&q));
printf("队列是否满 :%d\n",IsFull(&q));
printf("--------------------------\n");
printf("所以可见先入队的先出队\n");
printf("注意队满、队空、队列中元素的个数的判断条件\n");
return 0;
}
数组实现循环队列(一)
最新推荐文章于 2024-05-10 17:29:17 发布