循环队列源文件(个人学习记录)
#include"stdio.h"
#include"stdlib.h"
#define M_S 6
typedef struct queue
{
int a[M_S];
int front;
int rear;
}queue;
int Initqueue(queue *p)
{
p->front=p->rear=0;
return 1;
}
int Queuelength(queue *p)
{
return (p->rear-p->front+M_S)%M_S;
}
int Isempty(queue *p)
{
if(p->front==p->rear)
return 1;
else
return 0;
}
int Isfull(queue *p)
{
if(p->front==(p->rear+1)%M_S)
return 1;
else
return 0;
}
int Enqueue(queue *p,int key)
{
if(isfull(p))
return 0;
p->a[p->rear]=key;
p->rear=(p->rear+1)%M_S;
return 1;
}
int Dequeue(queue *p,int temp)
{
if(isempty(p))
return 0;
temp=p->a[p->front];
p->front=(p->front+1)%M_S;
return temp;
}
void Printqueue(queue*p)
{
int i, j;
for (i = 0,j = p->front; i < queuelength(p); i++, j = (j + 1) % M_S)
{
printf("%3d",p->a[j]);
}
printf("\n");
}
// int main()
// {
// int n=0,t=0,num=0,temp=0,b=0;
// queue p;
// printf("***********\n");
// printf("1.创建队列!\n");
// printf("2.入队!\n");
// printf("3.出队!\n");
// printf("4.打印队列元素!\n");
// printf("5.输出队列长度!\n");
// printf("0.退出!\n");
// printf("***********\n");
// while(1)
// {
// printf("选择你的操作:\n");
// scanf("%d",&n);
// switch(n)
// {
// case 1:
// {
// initqueue(&p);
// if(p.a)
// printf("队列创建成功!\n");
// break;
// }
// case 2:
// {
// if(!p.a)
// {
// printf("此队列不存在!\n");
// }
// else
// {
// printf("输入要入队的个数:\n");
// scanf("%d",&t);
// for(int i=0;i<t;i++)
// {
// int o=0;
// printf("输入你的数据:\n");
// scanf("%d",&o);
// enqueue(&p,o);
// }
// printf("入队完成!\n");
// }
// break;
// }
// case 3:
// {
// if(p.front!=p.rear)
// {
// printf("输入你尝试出队的数据个数:\n");
// scanf("%d",&num);
// if(num==1)
// {
// temp=dequeue(&p,temp);
// printf("出队元素为:");
// printf("%3d\n",temp);
// }
// else if(num>1)
// {
// printf("出队元素为:");
// for(int i = 0;i<num;i++)
// {
// temp=dequeue(&p,temp);
// printf("%3d",temp);
// }
// printf("\n");
// }
// }
// else
// {
// printf("此队列已经为空!\n");
// }
// break;
// }
// case 4:
// {
// printf("队列元素为:");
// printqueue(&p);
// break;
// }
// case 5:
// {
// b=queuelength(&p);
// printf("队列长度为:%d\n",b);
// break;
// }
// case 0:
// {
// exit(0);
// }
// }
// }
// return 0;
// }