include <stdio.h>
#include <stdlib.h>
#define N 5
typedef int datatype_t;
typedef struct
{
datatype_t data[N]; //顺序表定义的队
int front; //队头下标
int rear; //队尾下标
} seq_t;
//1.创建一个空的顺序队列
seq_t *createSeq(void)
{
seq_t *p=(seq_t *)malloc(sizeof(seq_t));
if (NULL == p)
{
printf("err.\n");
return NULL;
}//初始化队列 空
p->front=0;
p->rear=0;
return p;
}
//3.判断队列是否已满 1满 0不满
int isFullSeq(seq_t *p)
{
return (p->rear + 1) % N == p->front;
}
//2.入队
int pushSeq(seq_t *p, datatype_t data)
{
if (isFullSeq(p))
{
printf("err.\n");
return -1;
}
p->data[p->rear] = data;
p->rear = (p->rear + 1) % N;
return 0;
}
//4.判断队列是否为空 1空 0非空
int isEmptySeq(seq_t *p)
{
return p->front == p->rear;
}
//5.出队
datatype_t outSeq(seq_t *p)
{
if (isEmptySeq(p))
{
printf("err.\n");
return -1;
}
datatype_t temp = p->data[p->front];
p->front = (p->front + 1) % N;
return temp;
}
//6.计算队列长度
int lenSeq(seq_t *p)
{
return(p->rear - p->front + N) % N;
}
//7.清空队列
void clearSeq(seq_t *p)
{
p->front = p->rear = 0;
}
int main(int argc, char const *argv[])
{
seq_t *p = createSeq();
int data = 2;
while (!isFullSeq(p))
{
pushSeq(p, data++);
}
while (!isEmptySeq(p))
{
printf("%d ", outSeq(p));
}
putchar(10);
return 0;
}