这是循环队列的题目,要求再第一次输入元素后对进行判空判满,然后再输入元素进行判满,再进行再输入的时候在运行界面无法输入元素,不知道问题出在哪里,求指点
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 6
typedef struct{
char data[MAXSIZE];
char front;
char rear;
}SqQueue;
//初始化循环队列
void InintQueue(SqQueue *&Q)
{
Q=(SqQueue *)malloc(sizeof(SqQueue));
Q->front=Q->rear=0;
}
//判断队列是否为空
bool QueueEmpty(SqQueue *Q)
{
if(Q->front==Q->rear)
return true;
else
return false;
}
//入队
bool EnQueue(SqQueue *&Q,char &e)
{
if(Q->front==(Q->rear+1)%MAXSIZE)
return false;
Q->data[Q->rear]=e;
Q->rear=(Q->rear+1)%MAXSIZE;
return true;
}
//判断是否满
bool QueueFull(SqQueue *Q)
{
if(Q->front==(Q->rear+1)%MAXSIZE)
return true;
else
return false;
}
//取队首元素
bool GetHead(SqQueue *&Q,char &e)
{
if(Q->front==Q->rear)
return false;
else
e=Q->data[Q->front];
return true;
}
//出队
bool DeQueue(SqQueue *&Q,char &e)
{
if(Q->front==Q->rear)
return false;
else
e=Q->data[Q->front];
Q->front=(Q->front+1)%MAXSIZE;
return true;
}
//释放队列
void DestroyQueue(SqQueue *&Q)
{
free(Q);
}
int main(){
SqQueue *Q;
int i,n,m;
char d[6];
InintQueue(Q);
if(QueueEmpty(Q))
printf("空\n");
else
printf("不空\n");
printf("请输入元素 :\n");
for(i=0;i<=6;i++)
{
scanf("%c",&d[i]);
EnQueue(Q,d[i]);
}
if(QueueEmpty(Q))
printf("空\n");
else
printf("不空\n");
if(QueueFull(Q))
printf("不满\n");
else
printf("满\n");
printf("请再输入元素: \n");
for(m=i;m<n;m++)
{
scanf("%c",&d[m]);
EnQueue(Q,d[m]);
}
return 0;
}