编辑代码

#include <stdio.h>
#define datatype char
#define MAXSIZE 100 //队列的最大容量
typedef struct
{
    datatype data[MAXSIZE]; //队列的存储空间
    int front, rear; //队头队尾指针
}SEQQEUEE;//定义一个指向顺序队列的指针变量
SEQQEUEE *q;
void Init_Queue(SEQQEUEE *q)
{
    q->front=0;
    q->rear=0;
}

int Queue_Empty (SEQQEUEE *q)
{
    if (q->front==q->rear)
        return 1;
    else
        return 0;
}

void Add_Queue(SEQQEUEE *q,datatype x)
{
    if ((q->rear+1)%MAXSIZE==q->front)
        printf("Queue full");
    else
    {
        q->rear=(q->rear+1)%MAXSIZE;
        q->data[q->rear]=x;
    }
}

datatype Gethead_Queue(SEQQEUEE *q)
{
    datatype x;
    if (Queue_Empty(q))
        x=0;
    else
        x=q->data[(q->front+1)%MAXSIZE];
    return x;
}

datatype Del_Queue(SEQQEUEE *q)
{    datatype x;
    if (Queue_Empty(q))
    {
        printf("Queue empty");
     x=0; }
      else
{    q->front=(q->front+1)%MAXSIZE;
    x = q->data[q->front];
}
return x;
void Clear_Queue(SEQQEUEE *q)
{
    q->front=0;
    q->rear=0;
}

int QueueLength(SEQQEUEE *q)
{
    int len;
    len=(MAXSIZE+q->rear-q->front)%MAXSIZE;
    return len;
}

int main(){
    SEQQEUEE queue,*q;
    char ch;
    q=&queue;
    Init_Queue(q);
    scanf("%c",&ch);
    while(ch!='\n')
    {
        Add_Queue(q,ch);
        scanf("%c",&ch);
    }
    printf("%d\n",QueueLength(q));
    while(!Queue_Empty(q))
    {
        ch=Gethead_Queue(q);
        printf("%c",ch);
        Del_Queue(q);
    }
}
}