数据结构运行一半输入不了

img


这是循环队列的题目,要求再第一次输入元素后对进行判空判满,然后再输入元素进行判满,再进行再输入的时候在运行界面无法输入元素,不知道问题出在哪里,求指点

#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;
} 

那得看代码啊

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632