#include<bits/stdc++.h>
using namespace std;
typedef struct Queue{
int * pBase;
int front,rear;
}QUEUE;
void init(QUEUE *); //循环队列初始化
bool add_queue(QUEUE * pQ,int val); //入队
void traverse_queue(QUEUE *); //遍历输出
bool full_queue(QUEUE *); //判断队列是否已满
bool delete_queue(QUEUE * pQ,int * pVal); //出队
bool empty_queue(QUEUE *pQ);
int main(){
QUEUE Q;
init(&Q);
add_queue(&Q,1);
add_queue(&Q,2);
add_queue(&Q,3);
add_queue(&Q,4);
add_queue(&Q,5);
add_queue(&Q,6);
add_queue(&Q,7);
traverse_queue(&Q);
printf("\n");
int val;
if(delete_queue(&Q,&val)){
printf("出队成功,队列出队的元素是:%d\n",val);
}
else{
printf("出队失败!\n");
}
traverse_queue(&Q);
printf("\n");
return 0;
}
void init(QUEUE *pQ){
pQ->pBase=(int *)malloc(sizeof(int)*6);
pQ->front=0;
pQ->rear=0;
}
bool add_queue(QUEUE * pQ,int val){
if(full_queue(pQ)){
return false;
}
else{
pQ->pBase[pQ->rear]=val;
pQ->rear=(pQ->rear+1)%6;
}
}
bool delete_queue(QUEUE * pQ,int * pVal){
if(empty_queue(pQ)){
return false;
}
else{
*pVal=pQ->pBase[pQ->front];
pQ->front=(pQ->front+1)%6;
}
}
void traverse_queue(QUEUE *pQ){
int i=pQ->front;
while(i!=pQ->rear){
printf("%d ",pQ->pBase[i]);
i=(i+1)%6;
}
return;
}
bool empty_queue(QUEUE *pQ){
return pQ->front==pQ->rear;
}
bool full_queue(QUEUE *pQ){
if((pQ->rear+1)%6 == pQ->front){
return true;
}
else{
return false;
}
}
数据结构——循环队列
最新推荐文章于 2021-12-25 15:08:46 发布