C语言数据结构循环队列的操作集

#include
#include
#define M 100
typedef int ElemType;
typedef struct{
ElemType *base;
int front;
int rear;
}SqQueue;


void createqueue(SqQueue &Q,ElemType n)
{
int i;
Q.base=(ElemType *)malloc(M*sizeof(ElemType));
if(!Q.base)printf("大兄弟,分配空间失败!\n");
Q.front=Q.rear=0;
for(i=0;i {
scanf("%d",&Q.base[Q.rear]);
   Q.rear=(Q.rear+1)%M;
}


}


void insertqueue(SqQueue &Q,ElemType e)
{
if((Q.rear+1)%M==Q.front)
printf("队列都满了,大兄弟!\n");
Q.base[Q.rear]=e;
   Q.rear=(Q.rear+1)%M;
}


void deletequeue(SqQueue &Q)
{
    int e;
if(Q.front==Q.rear) 
printf("队列都为空还怎么删除数据!\n");
e=Q.base[Q.front];
Q.front=(Q.front+1)%M;
printf("出队的元素为%2d",e);
}


void lengthqueue(SqQueue &Q)
{
int e;
e=(Q.rear-Q.front+M)%M;
printf("这个队列的长度是%2d",e);
}




void print(SqQueue &Q)
{
int i;
i=Q.front;
if(Q.rear==Q.front)
{
printf("队列空,啥都没有!\n");
}
printf("队列里面的元素如下:\n");
while(i!=Q.rear)
{
printf("%3d",Q.base[i]);
i++;
i=i%M;


}
}
int main()
{
SqQueue q;
int n,e,choice;
printf("输入1是创建循环队列并入队\n输入2是元素入队\n输入3是元素出队\n输入4是队列的长度\n********正在等待用户输入指令*********\n");
while(scanf("%d",&choice)!=EOF)
{
if(choice==1)
{
printf("请输入入队的元素的个数;\n");
scanf("%d",&n);
createqueue(q,n);
print(q);
}
if(choice==2)
{
printf("请输入要插入的元素:\n");
scanf("%d",&e);
insertqueue(q,e);
print(q);
}
if(choice==3)
{
deletequeue(q);
print(q);
}
if(choice==4)
{
lengthqueue(q);
}




printf("\n***********正在等待用户输入**********\n");
}
return 0;
}







你可能感兴趣的:(c语言数据结构)