队列:
#ifndef _Queue_h struct QueueRecord; typedef struct QueueRecord *Queue; int Empty(Queue Q); int IsFull(Queue Q); Queue CreateQueue(int MaxElements); void DisposeQueue(Queue Q); void MakeEmpty(Queue Q); void Enqueue(ElementType X, Queue Q); ElementType Front(Queue Q); void Dequeue(Queue Q); ElementType FrontAndDequeue(Queue Q); #endif #define MinQueueSize (5) struct QueueRecord { int Capacity; int Front; int Rear; int Size; ElementType *Array; }; int IsEmpty(Queue Q) { return Q->Size==0; } void MakeEmpty(Queue Q) { Q->Size=0; Q->Front=1; Q->Rear=0; }
从上面的程序可以看到数组Array:
0 | 1 | 2 | 3 | 4 |
Rear=0,Front=1. 此时:若插入数据(入队Enqueue),则Rear向右移动一位,即Rear++;若删除数据(出队Dequeue),则Front向右移动一位,即Front++;
初始时Rear=0,Front=1.
上面定义的队列不为循环队列,所以:队列为空时,Size=0,Rear=Front-1;队列为满时,Size!=0,Rear=0。
时间: 2024-10-08 19:55:18