#include
#include
#define MaxSize 20
using namespace std;
typedef int ElemType;
typedef struct
{
ElemType data[MaxSize];
int rear, front;
}SqQueue;
void InitQueue(SqQueue *&s)
{
s->front = s->rear = 0;
}
bool EmptyQueue(SqQueue *&s)
{
return (s->front == s->rear);
}
void DestroyQueue(SqQueue *&s)
{
free(s);
}
bool Push(SqQueue *&s, ElemType e)
{
if (s->front == (s->rear + 1) % MaxSize)
return false;
s->data[s->rear] = e;
s->rear = (s->rear + 1) % MaxSize;
return true;
}
bool Pop(SqQueue *&s, ElemType &e)
{
if (s->front == s->rear)
return false;
e = s->data[s->front];
s->front = (s->front + 1) % MaxSize;
return true;
}
void Count(SqQueue *&s,int n)
{
int i;
ElemType e;
InitQueue(s);
cout << "原始队列:";
for (i = 1; i <= n; i++)
{
Push(s, i);
cout << i << " ";
}
while (!EmptyQueue(s))
{
Pop(s, e);
cout << e << " ";
if (!EmptyQueue(s))
{
Pop(s, e);
Push(s, e);
}
DestroyQueue(s);
cout << endl;
}
}
int main()
{
SqQueue *s;
int n;
cout << "输入队列人数:";
cin >> n;
Count(s, n);
return 0;
}