diff --git a/队列/线性循环队列基本操作.c b/队列/线性循环队列基本操作.c new file mode 100644 index 0000000..f0bc44c --- /dev/null +++ b/队列/线性循环队列基本操作.c @@ -0,0 +1,84 @@ +#include +#include +#include +#define MaxSize 10 + +//栈是只允许在一段进行插入或删除操作的线性表 +//队列只允许在一端进行插入,在另一端进行删除的线性表 +//这里的顺序队列以循环队列为例 + +typedef struct{ + int data[MaxSize]; + int front,rear; +}SqQueue; +//初始化队列 +void InitQUeue(SqQueue *S){ + S->front = S->rear = 0; +} +//判断队列是否满 +bool QueueFull(SqQueue S){ + if((S.rear+1)%MaxSize==S.front){ + return true; + } + return false; +} +//判断队列是否为空 +bool QueueEmpty(SqQueue S){ + if(S.front==S.rear){ + return true; + }else{ + return false; + } +} +//入队操作 +bool EnQueue(SqQueue *S,int x){ + if(QueueFull(*S)){ + return false; + } + S->data[S->rear] = x; + S->rear = (S->rear+1)%MaxSize; + return true; +} +//出队操作 +bool DeQueue(SqQueue *S,int* x){ + if(QueueEmpty(*S)){ + return false; + } + *x = S->data[S->front]; + S->front = (S->front+1)%MaxSize; + return true; +} +void PrintQueue(SqQueue S){ + for(int i=S.front;i