简介:
队列的实现除了链表外。也可用数组实现。
分析描写叙述:
队列的结构:
typedef int ElementType;typedef struct QueueRecord{ int Capacity; int Front; int Rear; int Size; ElementType *Array;}QueueRecord, *Queue;创建队列:
void MakeEmpty(Queue Q){ Q->Size = 0; Q->Front = 1; Q->Rear = 0;}Queue CreateQueue(int MaxElements){ Queue QueueHead = (Queue)malloc(sizeof(struct QueueRecord)); if(QueueHead == NULL){ fprintf(stderr, "out of sapce .\n"); exit(0); } QueueHead->Array = (ElementType *)malloc(sizeof(ElementType)*MaxElements); if(QueueHead->Array == NULL){ fprintf(stderr, "Out of sapce .\n"); } QueueHead->Capacity = MaxElements; MakeEmpty(QueueHead); return QueueHead;}推断队列为空或队列已满:
int IsEmpty(Queue Q){ return Q->Size == 0;}int IsFull(Queue Q){ return Q->Size == Q->Capacity;}入队列:
static intSucc(int Value, Queue Q){ if(++Value == Q->Capacity) Value = 0; return Value;}void Enqueue(ElementType data, Queue Q){ if(IsFull(Q)) fprintf(stderr, "full queue.\n"); else{ Q->Size++; Q->Rear = Su(Q->Rear, Q); Q->Array[Q->Rear] = X; } }出队列:
void Dequeue(Queue Q){ if(IsEmpty(Q)) fprintf(stderr, "Empty queue.\n"); else{ Q->Size--; Q->Front = Succ(Q->Front, Q); }}
版权声明:本文博主原创文章。博客,未经同意不得转载。