#include<stdio.h>
#include<stdlib.h>
#define MAX_SIZE 100
typedef struct{
int data[MAX_SIZE];
int front;
int rear;
}SeqQueue;
void InitQueue(SeqQueue *Q){//初始化队列
if(!Q){printf("内存分配错误
"); return;}
Q->front=0;
Q->rear=0;
printf("初始化完毕
");
}
void InQueue(SeqQueue *Q,int e){//进队列
int pos=(Q->rear+1)%MAX_SIZE;
if(!Q){printf("内存分配错误
"); return;}
if(pos==Q->front){
printf("内存已经满了
");
return;
}
Q->data[Q->rear]=e;
Q->rear=pos;
printf("%d已经入队
",e);
}
void OutQueue(SeqQueue *Q){//出队列
int e;
if(!Q){printf("内存分配错误
"); return;}
if(Q->front==Q->rear){printf("队列为空
");return;}
e=Q->data[Q->front];
Q->front=(Q->front+1)%MAX_SIZE;
printf("%d已经出队
",e);
}
void IsEmpty(SeqQueue *Q){//是否为空
if(!Q){printf("内存分配错误
"); return;}
if(Q->rear==Q->front){printf("队列为空
");}
printf("队列不为空
");
}
void LengthQueue(SeqQueue *Q){//队列长度
int length;
length=((Q->rear-Q->front+MAX_SIZE)%MAX_SIZE);
printf("队列的长度为:%d
",length);
}
void TraversalQueue(SeqQueue *Q){//遍历队列
int i;
int p=Q->front;
if(!Q){printf("内存分配错误
"); return;}
if(Q->front==Q->rear){printf("队列为空
");return;}
for(i=Q->front;i<Q->rear;i++){
printf("%d ",Q->data[p]);
p++;
}
printf("
");
}
int main(void){
SeqQueue* Q=(SeqQueue*)malloc(sizeof(SeqQueue));
int n,a;
int y=1;
while(y){
printf("***********************
");
printf("--1.初始化队列--
");
printf("--2.进队--
");
printf("--3.出队--
");
printf("--4.遍历队--
");
printf("--5.求队长--
");
printf("--6.队是否为空--
");
printf("--7.退出--
");
printf("请输入你要进行的操作:
");
scanf("%d",&n);
switch(n){
case 1: InitQueue(Q); break;
case 2: printf("请输入你要进队的数:
");scanf("%d",&a);InQueue(Q,a); break;
case 3: OutQueue(Q); break;
case 4: TraversalQueue(Q); break;
case 5: LengthQueue(Q); break;
case 6: IsEmpty(Q); break;
case 7: y=0;break;
}
}
return 0;
}