#include "stdafx.h"
#include <iostream>
using namespace std;
typedef int DataType;
#define MAXSIZE 5
typedef struct{
DataType *base;
int front;
int rear;
}CircleQueue;
CircleQueue *init(CircleQueue *queue)
{
queue->base = (DataType*)malloc(MAXSIZE*sizeof(DataType));
if(!queue) exit(0);
queue->rear = queue->front =0;
return queue;
}
int getLength(CircleQueue *queue)
{
return (queue->rear - queue->front +MAXSIZE)%MAXSIZE;
}
void inQueue(CircleQueue *queue,DataType e)
{
if((queue->rear+1)%MAXSIZE ==queue->front)
{
cout<<"the queue is full"<<endl;
exit(0);
}else
{
queue->base[queue->rear] = e;
queue->rear = (queue->rear+1)%MAXSIZE;
}
}
void outQueue(CircleQueue *queue)
{
if(queue->front == queue->rear)
{
cout<<"the queue is empty"<<endl;
exit(0);
}else
{
cout<<"the out element is :"<<queue->base[queue->front];
queue->front= (queue->front+1)%MAXSIZE;
}
}
void main()
{
CircleQueue Q;
Q = *init(&Q);
cout<<"after init queue length:"<<getLength(&Q)<<endl;
inQueue(&Q,1);
cout<<"after input queue length:"<<getLength(&Q)<<endl;
inQueue(&Q,2);
cout<<"after input queue length:"<<getLength(&Q)<<endl;
inQueue(&Q,3);
cout<<"after input queue length:"<<getLength(&Q)<<endl;
inQueue(&Q,4);
cout<<"after input queue length:"<<getLength(&Q)<<endl;
outQueue(&Q);
cout<<"after output queue length:"<<getLength(&Q)<<endl;
inQueue(&Q,5);
cout<<"after input queue length:"<<getLength(&Q)<<endl;
inQueue(&Q,6);
cout<<"after input queue length:"<<getLength(&Q)<<endl;
}
原文:http://www.cnblogs.com/waiwai4701/p/4207945.html