#include<stdio.h>
#include<stdlib.h> #define MAXSIZE 10//定义队列长度 static int flag=;//定义标志位 typedef struct {
int *base;
int front;
int rear;
}SqQueue;//创建结构体 int InitQueue(SqQueue &Q){
Q.base=(int*)malloc(MAXSIZE*sizeof(int));
if(!Q.base)
return ;
else{
Q.front=Q.rear=;
return ;
}
}//创建空链表 int IsEmpety(SqQueue &Q){
if(flag==&&Q.front==Q.rear){
printf("队列为空\n");
return ;
}
else
return ; }//判断是否为空 int IsFull(SqQueue &Q){
if(flag==&&Q.front==Q.rear){
printf("队列已满\n");
return ;
}
else
return ;
}//判断是否已满 void AddQueue(SqQueue &Q){
if(IsFull(Q)==){
int e;
printf("请输入元素:\n");
scanf("%d",&e);
Q.base[Q.rear]=e;
Q.rear=(Q.rear+)%MAXSIZE;
flag=;
}
}//添加元素 void DeleteQueue(SqQueue &Q){
if(IsEmpety(Q)==){
int e;
e=Q.base[Q.front];
Q.front=(Q.front+)%MAXSIZE;
flag=;
printf("%d\n",e);
}
}//删减元素 void Action(SqQueue &Q){
printf("1.入队\n");
printf("2.使队头元素出队,并返回它的值\n");
printf("3.退出\n");
int a;
scanf("%d",&a);
switch(a)
{
case : AddQueue(Q);
break;
case : DeleteQueue(Q);
break;
case :
exit();
default:
printf("输入不合法,请重新输入\n"); }
Action(Q);
}//操作选项 int main(){
SqQueue Q;
if(InitQueue(Q))
printf("创建成功。\n");
else{
printf("创建失败。");
system("pause");
return ;
} Action(Q); system("pause");
free(Q.base);
return ; }//主函数

虽然用标志位实现了,可是将int型数组换为char型数组时会出现错误,在此保留疑问,待解决。

05-11 21:52