// StaticQuene.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
struct StaticQuene
{
private:
char buff[10];
int front;
int rear;
public:
bool isFull()
{
return ((rear+1)%10)==front;
}
bool isEmpty()
{
return front==rear;
}
StaticQuene()
{
//buff[0]=c;
front=0;
rear=0;
}
bool Enquene(char c)
{
if(isFull())
return false;
buff[rear]=c;
rear=++rear%10;
return true;
}
bool OutQuene(char& c)
{
if(isEmpty())
return false;
c=buff[front];
front=++front%10;
return true;
}
int getLength()
{
if (rear>=front)
return (rear-front);
//else if(rear==front)
// return isFull?10:0;
else
return (rear+10-front);
}
};
int main(int argc, char* argv[])
{
StaticQuene quene;
int i=0;
char c;
while(!quene.isFull())
{
quene.Enquene('a'+i++);
printf("%d ",quene.getLength());
}
printf("\n");
while(!quene.isEmpty())
{
quene.OutQuene(c);
printf("%c %d;",c,quene.getLength());
}
printf("=======================\n");
i=0;
while(!quene.isFull())
{
quene.Enquene('a'+i++);
printf("%d ",quene.getLength());
}
printf("\n");
while(!quene.isEmpty())
{
quene.OutQuene(c);
printf("%c %d;",c,quene.getLength());
}
printf("=======================\n");
return 0;
}
/*
1 2 3 4 5 6 7 8 9
a 8;b 7;c 6;d 5;e 4;f 3;g 2;h 1;i 0;=======================
1 2 3 4 5 6 7 8 9
a 8;b 7;c 6;d 5;e 4;f 3;g 2;h 1;i 0;=======================
Press any key to continue
*/