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