#include<stdio.h>
//#include<stdlib.h>
typedef int datatype;//把int 改名为 datatype
#define MAXLEN 10//定义MAXLEN==10
#define N sizeof(loopqueue)//一个结点所占的字节数为N
typedef struct//定义循环队列结构体结构
{
datatype data[MAXLEN];
int front,
rear;
//int n;
}loopqueue;
//置空队
void Emptyqueue(loopqueue *q)
{
q->front=q->rear=MAXLEN-1;
}
//进队,循环队列进队
int Enterqueue(loopqueue *q)
{
int x=0;
printf("请输入,所要 进队 的“整数”:\n");
while(1)
{
printf("\t进队整数为:\t");
scanf("%d",&x);
/*if(!scanf("%d",&x))
{
printf("\t\t\t输入的“元素“种类错误,请重新输入!!!\n");
continue;
}
else*/ if(q->front==(q->rear+1)%MAXLEN)
{
printf("\t\t\t循环队列已满,不能进队!!!\n");
return 0;
}
else if(x==0)
{
break;
}
else
{
q->rear=(q->rear+1)%MAXLEN;
q->data[q->rear]=x;
//q->n++;
printf("\t\t\t入队成功!\n");
}
}
}
//出队,队内元素出队,先进先出
void Putqueue(loopqueue *q)
{
int m=0;
int x;
//m=q->n;
if(q->front==q->rear)
{
printf("\t\t\t循环队列 已空 ,不能出队!!!\n");
}
else
{
//printf("出队的元素为: ");
//printf("%d",q->data[q->rear]);
q->front=(q->front+1)%MAXLEN;
x=q->data[q->front];
//m--;;
printf("\t\t\t出队成功!\t");
//printf("出队的元素为: ");
//printf("%d",q->data[q->rear]);
//q->n--;
}
}
//求队中元素个数
void Lengthqueue(loopqueue *q)
{
//int k;
printf("\t队中元素的个数为:\t");
//printf("%d",q->n);
//printf("\t");
printf("%d",(q->rear-q->front+MAXLEN)% MAXLEN);
}
// 显示,队内元素的显示
int ShowQueue(loopqueue *q)
{ int k=q->front;
if (k==q->rear)
{ printf("\n\t\t 此队列为空! \n");
return 0;
}
printf("\n\t\t 此队列元素为:");
do
{ k=(k+1)%MAXLEN;
printf("%4d",q->data[k]);
} while (k!=q->rear);
printf("\n");
return 0;
}
int main()
{
int a=0;
loopqueue q;
Emptyqueue(&q);
while(1)
{
printf(" \n\t\t\t\t\t\t循环队列系统子系统\n");
printf(" \t\t***************************************************\n");
printf(" \t\t* 1------进 队 *\n");
printf(" \t\t* 2------出 队 *\n");
printf(" \t\t* 3------显 示 *\n");
printf(" \t\t* 4------求队中元素个数 *\n");
printf(" \t\t* 0------返 回 *\n");
printf(" \t\t***************************************************\n");
printf(" 请输入(0-4)选项:\n");
printf("\n请输入所要达到第几号功能:\t");
//fflush(stdin);
scanf("%d",&a);
if(a == 1)
Enterqueue(&q);
else if(a == 2)
Putqueue(&q);
else if(a == 3)
ShowQueue(&q);
else if(a == 4)
Lengthqueue(&q);
else if(a == 0)
return 0;
else
{
printf("!!!!!输入有误,请重新输入!!!!!\n");
}
}
}
数据结构(循环队列子系统:c实现)
最新推荐文章于 2022-08-16 15:16:24 发布