/********************************
* 循环顺序队的基本操作
* 2021/8/18
*************************************/
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 10
typedef struct
{
int* base;
int front;
int rear;
}SqQueue;
/*①初始化循环队列*/
int SqQueue_Init(SqQueue*q)
{
q->base = (SqQueue*)malloc(MAXSIZE*sizeof(SqQueue));
if (!q->base)
return -1;
else
{
q->front = q->rear = 0;
return 1;
}
}
/*②入队*/
int Enter_SqQueue(SqQueue* q, int e)
{
if ((q->rear + 1) % MAXSIZE == q->front)
return -1;
else
{
q->base[q->rear] = e;
q->rear = (q->rear+1) % MAXSIZE;
return 1;
}
}
/*③取队列长度*/
int Length_SqQueue(SqQueue* q)
{
return (q->rear - q->front + MAXSIZE) % MAXSIZE;
}
/*④取队头元素*/
int Get_Front(SqQueue* q)
{
return q->base[q->front];
}
/*⑤出队*/
int Out_SqQueue(SqQueue* q,int *e)
{
//int* e=NULL;
if (q->rear == q->front)
return -1;
else
{
*e=q->base[q->front];
q->front = (q->front + 1) % MAXSIZE;
return *e;
}
}
void main(void)
{
/*①初始化循环队列*/
SqQueue* q1 = (SqQueue*)malloc(sizeof(SqQueue));
int a = 0;
a=SqQueue_Init(q1);
//printf("%d",a);
/*②入队*/
int i,b=0;
for (i = 0; i < 5; i++)
{
b=Enter_SqQueue(q1,i+1);
//printf("%d\n",b);
}
/*③取队列长度*/
int c = 0;
c = Length_SqQueue(q1);
//printf("%d",c);
/*④取队头元素*/
int g = 0;
g = Get_Front(q1);
//printf("%d",g);
/*⑤出队*/
int j,f,d= 0;
int *e1 = &d;
for (j = 0; j < 5; j++)
{
f=Out_SqQueue(q1,e1);
//printf("%d\n",f);
}
}
01-20
465
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
04-12
6278
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
10-12
699
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)