#include <stdio.h>
#include <stdlib.h>
typedef int elemType;
#define maxsize 100
struct Quenue {
elemType *date;
int front;
int rear;
};
void InitQueue(struct Quenue *q)
{
q->date = malloc(maxsize * sizeof(elemType));
q->front = q->rear = 0;
return ;
}
void DestroyQueue(struct Quenue *q)
{
if(q->date!=NULL)
{
free(q->date);
q->front = q->rear = 0;
}
return ;
}
void ClearQueue(struct Quenue *q)
{
if(q->date!=NULL)
{
q->front = q->rear = 0;
}
return ;
}
int QueueEmpty(struct Quenue *q)
{
if(q->front==q->rear==0)
{
return 1;
}
else
return 0;
}
int QueueLength(struct Quenue *q)
{
if(q->date!=NULL)
{
return q->rear-q->front;
}
else
return 0;
}
elemType GetHead(struct Quenue *q)
{
if(q->date!=NULL)
{
return q->date[q->front];
}
else
return 0;
}
void EnQueue(struct Quenue *q,elemType e)
{
if(QueueLength(q)!=maxsize)
{
q->date[q->rear] = e;
q->rear++;
}
return ;
}
elemType DeQueue(struct Quenue *q)
{
elemType x = 0;
if(q->date!=NULL)
{
x = q->date[q->front];
q->front++;
}
return x;
}
void traverse(struct Quenue s)
{
struct Quenue *p =&s;
printf("从队首到队尾依次输出:");
while(p->front!=p->rear)
{
printf("%d ",p->date[p->front]);
p->front++;
}
return ;
}
void main()
{
elemType x = 0;
int i = 0;
struct Quenue s;
while(1)
{
printf("1->初始化顺序队列\n");
printf("2->销毁队列\n");
printf("3->清空队列\n");
printf("4->判空队列\n");
printf("5->队列长度\n");
printf("6->读取队首元素\n");
printf("7->入列\n");
printf("8->出列\n");
printf("9->遍历队列\n");
printf("清选择操作:");
scanf("%d",&i);
switch(i)
{
case 1:
printf("初始化顺序队列");
InitQueue(&s);
break;
case 2:
printf("销毁队列:");
DestroyQueue(&s);
break;
case 3:
printf("清空队列:");
QueueEmpty(&s);
getchar();
getchar();
break;
case 4:
if(QueueEmpty(&s))
{
printf("队列非空!");
getchar();
getchar();
break;
}
else
printf("队列为空!");
getchar();
getchar();
break;
case 5:
printf("队列长度为%d:",QueueLength(&s));
getchar();
getchar();
break;
case 6:
printf("队首元素为%d:",GetHead(&s));
getchar();
getchar();
break;
case 7:
printf("请输入入列元素:");
scanf("%d",&x);
EnQueue(&s,x);
getchar();
getchar();
break;
case 8:
printf("出列元素为:%d",DeQueue(&s));
getchar();
getchar();
break;
case 9:
printf("遍历队列!\n");
traverse(s);
getchar();
getchar();
break;
}
system("cls");
}
}