您的位置:首页 > 其它

数组实现循环队列(一)

2015-10-14 21:09 459 查看
</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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: