顺序循环队列C语言实现
定义
typedef struct{
DataType queue[MaxQueueSize];
int rear;
int front;
int cnt;
}
初始化
void QueueInitiate(SeqCQueue *Q){
Q->rear=0;
Q->front=0;
Q->cnt=0;
}
判断非空
int QueueNotEmpty(SeqCQueue Q){
if(Q.cnt!=0)return 1;
else return 0;
}
入队
int QueueAppend(SeqCQueue *Q,DataType x){
if(Q->cnt>0&&Q->rear==Q->front){
printf("队列已满无法插入!\n");
return 0;
}
else{
Q->queue[Q->rear]=x;
Q->rear=(Q->rear+1)%MaxQueueSize;
Q->cnt++;
return 1;
}
}
出队
int QueueDelete(SeqCQueue *Q,DataType *d){
if(Q->cnt==0){
printf("队列已空无法出队!\n");
return 0;
}
else{
*d=Q->queue[Q->front];
Q->front=(Q->front+1)%MaxQueueSize;
Q->cnt--;
return 1;
}
}
取队头元素
int QueueGet(SeqCQueue Q,DataType *d){
if(Q.cnt==0){
printf("队列已空无元素可取!\n");
return 0;
}
else{
*d=Q.queue[Q.front];
return 1;
}
}