复习吧算是……
参考:《大话数据结构》程杰
#include<stdio.h>
#define N 30
struct Queue{
int front,rear;
int QueueSize;
int data[N];
void InitQueue(){
front = rear = 0;
QueueSize = N;
for(int i=0;i<QueueSize;data[i++]=0);
}
void ClearQueue(){
while(QueueLength()>0){
DeQueue();
}
}
int QueueEmpty(){
if(QueueLength()==0)return 1;
return 0;
}
int GetHead()//取队首
{
return data[front];
}
int EnQueue(int e)//队尾入队
{
if( (rear + 1)%QueueSize == front )return -1;
data[rear] = e;
rear = (rear + 1)%QueueSize;
return 1;
}
int DeQueue()//队首出队
{
if(front == rear)return -1;
front = (front + 1)%QueueSize;
return 1;
}
int QueueLength(){
return (rear - front + QueueSize)%QueueSize;
}
};
int main()
{
int n,i,x;
while(~scanf("%d",&n)){
Queue fuck;
fuck.InitQueue();
for(i=0;i<n;i++){
scanf("%d",&x);
fuck.EnQueue(x);
}
//fuck.ClearQueue();
//printf("The length of the Queue: %d\n",fuck.QueueLength());
while(!fuck.QueueEmpty()){
puts("");
printf("The head of the Queue: %d\n",fuck.GetHead());
printf("The length of the Queue: %d\n",fuck.QueueLength());
puts("");
fuck.DeQueue();
}
}
return 0;
}