#include<stdio.h>
#include <stdlib.h>
#define OK 1
#define MAXSIZE 100
#define ERROR 0
typedef struct
{
char name[20];
}student;
typedef struct
{
student *data;
int front;
int rear;
}SqQueue;
int Initlist(SqQueue *L)//构建一个空的顺序表L
{ L->data=(student *)malloc(sizeof(student)*MAXSIZE);
if(!L->data)return ERROR;
L->front=L->rear=0;
return OK;
}
int EnQueue(SqQueue *L)//入队
{
if(((L->rear)+1)%MAXSIZE==L->front)
{
printf("队已满,抱歉。\n");
return ERROR;
}
scanf("%s",L->data[L->rear].name);
L->rear=(L->rear+1)%MAXSIZE;
return OK;
}
/*int DeQueue(SqQueue *L)//出栈
{ if(L->front==L->rear)return ERROR;
printf("%s",L->data[L->front].name);
L->front=(L->front+1)%MAXSIZE;
return OK;
}*/
char* DeQueue(SqQueue *L)//出栈
{ if(L->front==L->rear)
printf("抱歉你的队已经满了。\n");
return L->data[L->front].name;
L->front=(L->front+1)%MAXSIZE;
}
int QueueLength(SqQueue *L)//求长度
{
return (L->rear-L->front+MAXSIZE)%MAXSIZE;
}
char* Gethead(SqQueue *L)//出表头
{
if(L->front!=L->rear)
return L->data[L->front].name;
}
int main()
{
SqQueue SQ;
SqQueue *L;
L=&SQ;
student *e;
int a;
printf("请输入你要进行的操作\n");
printf("1.初始化\n");
printf("2.入队\n");
printf("3.出队\n");
printf("4.求长度。\n");
printf("5.输出表头。\n");
while(1)
{
scanf("%d",&a);
switch (a)
{
case 1:
Initlist(L);
printf("初始化成功。\n");
break;
case 2:
printf("请输入你要添加的字符串.\n");
EnQueue(L) ;
break;
case 3:
{int i;
i=QueueLength(L);
while(i>0)
{
//DeQueue(L);
printf("%s\n", DeQueue(L));
i--;
}
break;
}
case 4:
printf("当前的长度为%d\n",QueueLength(L));
break;
case 5:
printf("%s\n",Gethead(L)) ;
break;
}
}
}
2018-05-28顺序循环队列的实现
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 小学语文修改病句的方法 修改病句是小学语文考试中常见的题型,在修改病句之前,我们应该清晰的了解有哪些病句现象,下面...
- 1.当代种种事件不同于历史之处,在于我们不知道它们会产生什么后果。 2.经验和利益的偶然结合,往往会向人们揭示...
- 首先让我们先简单地来认识一下队列: 队列介绍 队列一种受限线性表,只允许在一段进行插入,在另一端进行删除。它还有个...
- 工欲善其事,必先利其器。目前虽然所有手机都具备了拍摄照片的功能,但是无疑单反在摄影界的地位还是无法被取代的。如果你...