版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
队列的顺序存储
源代码
#include<stdbool.h>
#include <stdio.h>
#include<stdlib.h>
#define MAXQUEUE 10
typedef struct queue{
int front,rear;
int Queueentry[MAXQUEUE];
int c;
}Queue;
//队初始化
bool Queue_Init(Queue* l){
l->front=-1;
l->rear=-1;
l->c=0;
return true;
}
//判断队空
bool Queue_Empty(Queue* l){
bool flag=false;
if(l->c==0)
flag=true;
return flag;
}
//判断队满
bool Queue_Full(Queue* l){
bool flag=false;
if(l->c==MAXQUEUE)
flag=true;
return flag;
}
//入队
bool Queue_Push(Queue* l,int ele){
bool flag=false;
if(!Queue_Full(l)){
l->front=(l->front+1)%MAXQUEUE;
l->Queueentry[l->front]=ele;
l->c++;
flag=true;
}
return flag;
}
//出队
bool Queue_Pop(Queue* l,int* ele){
bool flag=false;
if(!Queue_Empty(l)){
l->rear=(l->rear+1)%MAXQUEUE;
*ele=l->Queueentry[l->rear];
l->c--;
flag=true;
}
return flag;
}
//打印队列
bool Queue_print(Queue* l){
bool flag=false;
int i;//计数器
if(!Queue_Empty(l)){
for(i=(l->rear+1)%MAXQUEUE;i!=(l->front);i=(i+1)%MAXQUEUE)
printf("%d ",l->Queueentry[i]);
printf("%d ",l->front);
flag=true;
}
return flag;
}
//调试函数
int main(int argc, const char * argv[]) {
printf("Hello, World!\n");
Queue q;
bool flag;
int j;
flag=Queue_Init(&q);
for(int i=0;i<=13;i++)
flag=Queue_Push(&q, i);
flag=Queue_print(&q);
printf("\n");
flag=Queue_Pop(&q, &j);
printf("%d",j);
printf("\n");
flag=Queue_print(&q);
printf("\n");
return 0;
}