编辑代码

#include <stdio.h>
#define MAXSIZE 100
typedef struct
{
    char data[MAXSIZE];
    int front, rear;
} SEQQUEUE;

void Init_Queue(SEQQUEUE *q)
{
    q->front = 0;
    q->rear = 0;
}

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

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

char Gethead_Queue(SEQQUEUE *q)
{
    if (Queue_Empty(q))
        return '\0';
    else
        return q->data[(q->front + 1) % MAXSIZE];
}

char Del_Queue(SEQQUEUE *q)
{
    char x;
    if (Queue_Empty(q))
    {
        printf("Queue empty\n");
        x = '\0';
    }
    else
    {
        q->front = (q->front + 1) % MAXSIZE;
        x = q->data[q->front];
    }
    return x;
}

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

int main()
{
    SEQQUEUE 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);
    }
    
    return 0;
}