#define _CRT_SECURE_NO_WARNINGS 1
//循环队列
#include <stdio.h>
#include <stdlib.h>
#define ok 1
#define error 0
#define MAXSIZE 100
typedef struct
{
int data[MAXSIZE];
int front;
int rear;
}SqQueue;
//初始化
void InitQueue(SqQueue* Q)
{
Q->front = 0;
Q->rear = 0;
}
//队列的长度
int QueueLength(SqQueue* Q,int *e)
{
if (Q->front == (Q->rear + 1) % MAXSIZE)
return error;
*e = (Q->rear - Q->front) % MAXSIZE;
return ok;
}
//入队
int EnQueue(SqQueue* Q,int e)
{
if ((Q->rear + 1) % MAXSIZE == Q->front)
return error;
Q->data[Q->rear] = e;
Q->rear = (Q->rear + 1) % MAXSIZE;
return ok;
}
//出队
int DeQueue(SqQueue* Q,int *e)
{
if (Q->front == Q->rear)
return error;
*e = Q->data[Q->front];
Q->front = (Q->front + 1) % MAXSIZE;
return ok;
}
//获取队头的元素
int GetQueue(SqQueue* Q, int* e)
{
if (Q->front == (Q->rear+1)%MAXSIZE)
return error;
*e = Q->data[Q->front];
return ok;
}
//判断队是否为空
int QueueEmpty(SqQueue* Q)
{
if (Q->front == (Q->rear + 1) % MAXSIZE)
return ok;
else return error;
}
int main()
{
SqQueue Q;
InitQueue(&Q);
int i, n, e;
printf("请输入入队的个数: ");
scanf("%d", &n);
printf("\n请输入入队元素: ");
for (i = 0; i < n; i++)
{
scanf("%d", &e);
EnQueue(&Q, e);
}
printf("\n队头元素是: ");
if (GetQueue(&Q, &e))
{
printf("%d\n", e);
}
else printf("队列为空!!!\n");
printf("队列长度是: ");
if (QueueLength(&Q, &e))
{
printf("%d\n",e);
}
else printf("队列为空!!!\n");
printf("请输入出队个数: ");
scanf("%d",&n);
printf("出队元素是: ");
for (i = 0; i < n; i++)
{
DeQueue(&Q, &e);
printf("%d ", e);
}
printf("\n队头元素是: ");
if (GetQueue(&Q, &e))
{
printf("%d\n", e);
}
else printf("队列为空!!!\n");
printf("队列长度是: ");
if (QueueLength(&Q, &e))
{
printf("%d\n", e);
}
else printf("队列为空!!!\n");
return 0;
}
数据结构--循环队列
最新推荐文章于 2024-09-11 02:02:22 发布