/*
顺序结构的循环队列
*/
# include<stdio.h>
# include<malloc.h>
# define MAXSIZE 5
typedef struct
{
int * base; //分配内存的地址
int front; //队头指针
int rear; //队尾指针
}Qu;
Qu inital(); //初始化队列
void add(Qu &Q, int val); //队列中添加元素
void dele(Qu &Q, int &val); //队列中删除元素
int Length(Qu Q); //求队列长度
int main(void)
{
int i;
int len;
int val;
//初始化队列
Qu Q = inital();
//向队列中添加元素
for(i = 0; i < MAXSIZE; i++)
{
printf("元素入列:");
scanf("%d", &val);
add(Q, val);
}
len = Length(Q);
printf("len = %d\n", len);
//向队列中删除元素
printf("元素出列:\n");
for(i = 0; i < len; i++)
{
dele(Q, val);
printf("%d ", val);
}
printf("\n");
len = Length(Q);
printf("len = %d\n", len);
return 0;
}
//队列的初始化
Qu inital()
{
Qu Q;
Q.base = (int *)malloc(sizeof(int) * MAXSIZE); //队列空间
Q.front = Q.rear = 0; //首尾指针初始化
return Q;
}
//在队头添加元素
void add(Qu &Q, int val)
{
//队列是否满
if((Q.rear + 1) % MAXSIZE == Q.front)
{
printf("队列已满\n");
return;
}
Q.base[Q.rear] = val;
Q.rear = (Q.rear + 1) % MAXSIZE;
}
//删除队尾元素
void dele(Qu &Q, int &val)
{
//判断队列是否空
if(Q.front == Q.rear)
{
printf("队列已空\n");
return;
}
val = Q.base[Q.front];
Q.front = (Q.front + 1) % MAXSIZE;
}
//求队列的长度
int Length(Qu Q)
{
return (Q.rear - Q.front + MAXSIZE) % MAXSIZE;
}
C语言:顺序结构(数组)的循环队列
最新推荐文章于 2022-02-13 11:09:00 发布