源代码
typedef struct
{
ElemType queue[MaxQueueSize];
int rear; /*队尾指针*/
int front; /*队头指针*/
int count; /*计数器*/
} SequenceQueue ;
void QueueInitiate(SequenceQueue *Q)
/*初始化顺序循环队列Q*/
{
Q->rear = 0; /*定义初始队尾指针下标值*/
Q->front = 0; /*定义初始队头指针下标值*/
Q->count = 0; /*定义初始计数器值*/
}
int QueueAppend(SequenceQueue *Q, ElemType x)
{ if(Q->count > 0 && Q->rear == Q->front)
{ printf("队列已满无法插入! \n");
return 0; }
else
{ Q->queue[Q->rear] = x;
Q->rear = (Q->rear + 1) % MaxQueueSize;
Q->count++;
return 1;
}
}
int QueueDelete(SequenceQueue *Q, ElemType *d)
{ if(Q->count == 0)
{ printf("队列已空无数据元素出队列! \n");
return 0; }
else {
*d = Q->queue[Q->front];
Q->front = (Q->front + 1) % MaxQueueSize;
Q->count--;
return 1;
}
}
int main()
{ SequenceQueue myQueue; int i , x;
QueueInitiate(&myQueue); /*初始化*/
for(i = 0; i < 10; i++)
{ if(QueueAppend(&myQueue, i+1) == 0) {
printf("错误! \n"); return; }
}
if(QueueGet(myQueue, &x) == 0) /*取队头数据元素*/
{ printf("错误! \n"); return;
}
else
printf("%d\n", x);
QueueDelete(&myQueue, &x); /*出队列*/
return 0;
}