引言:
队列的实现除了链表外,也可用数组实现。
分析描述:
队列的结构:
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 int Succ(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); } }
原文地址:http://blog.csdn.net/to_be_it_1/article/details/37660673