#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 100
#define OK 1
#define OVERFLOW -1
typedef struct{
int *base;
int front;
int rear;
}SqQueue;
typedef int Status;
//初始化
Status InitQueue(SqQueue *Q)
{
Q->base=(int *)malloc(MAXSIZE*sizeof(int));
if(!(Q->base))
exit(OVERFLOW);
Q->front=Q->rear=0;
return OK;
}
//队列的长度
int QueueLength(SqQueue Q)
{
return (Q.rear-Q.front+MAXSIZE)%MAXSIZE;
}
//入队
Status EnQueue(SqQueue *Q,int e)
{
if((Q->rear+1)%MAXSIZE==Q->front)
return -1;
Q->base[Q->rear]=e;
Q->rear=(Q->rear+1)%MAXSIZE;
return OK;
}
//出队
Status DeQueue(SqQueue *Q,int *e)
{
if(Q->front==Q->rear)
return -1;
*e=Q->base[Q->front];
Q->front=(Q->front+1)%MAXSIZE;
return OK;
}
void main()
{
int ch=1;
SqQueue Q;
InitQueue(&Q);
while(ch!=0)
{
system("cls");
printf("1.队列长度\t2.进队\t3.出队\n");
printf("请选择:\n");
scanf("%d",&ch);
switch(ch)
{
case 0:printf("byebye!\n");
break;
case 1:
{
int len;
len=QueueLength(Q);
printf("长度为:%d\n",len);
break;
}
case 2:
{
int e;
printf("请输入你要入队的数值:\n");
scanf("%d",&e);
if(EnQueue(&Q,e)==OK)
printf("入队成功\n");
else
printf("入队失败\n");
break;
}
case 3:
{
int e;
DeQueue(&Q,&e);
printf("%d\n",e);
break;
}
default:
printf("输入错误,请重新输入\n");
break;
}
system("pause");
}
}
数据结构-C语言实现循环队列
最新推荐文章于 2023-10-27 16:19:46 发布