WEB开发网
开发学院软件开发数据结构 数据结构-队列与双端队列(C描述) 阅读

数据结构-队列与双端队列(C描述)

 2010-05-06 11:59:03 来源:WEB开发网   
核心提示:queue.c#include "queue.h"#include "fatal.h"#define MinQueueSize 5struct QueueRecord{int Capacity;int Front;//指向队头元素int Rear;//指向队尾元素int Size

queue.c

#include "queue.h"
#include "fatal.h"
#define MinQueueSize 5
struct QueueRecord
{
    int Capacity;
    int Front;//指向队头元素
    int Rear;//指向队尾元素
    int Size;
    ElementType *Array;
};
int IsEmpty(Queue Q)
{
    return Q->Size == 0;
}
int IsFull(Queue Q)
{
    return Q->Size == Q->Capacity;
}
Queue CreateQueue(int MaxElements)
{
    Queue Q;
    if(MaxElements < MinQueueSize)
        Error("Queue size is too small");
    Q = malloc(sizeof(struct QueueRecord));
    if(Q == NULL)
        FatalError("Out of space!!!");
    Q->Array = malloc(sizeof(ElementType) * MaxElements);
    if(Q->Array == NULL)
        FatalError( "Out of space!!!" );
    Q->Capacity = MaxElements;
    MakeEmpty(Q);
    return Q;
}
void MakeEmpty(Queue Q)
{
    Q->Size = 0;
    Q->Front = 1;
    Q->Rear = 0;
}
void DisposeQueue(Queue Q)
{
    if(Q != NULL)
    {
        free(Q->Array);
        free(Q);
    }
}
static int Succ(int Value, Queue Q)
{
    if(++Value == Q->Capacity)
        Value = 0;
    return Value;
}
void Enqueue(ElementType X, Queue Q)
{
    if(IsFull(Q))
        Error("Full queue");
    else
    {
        Q->Size++;
        Q->Rear = Succ(Q->Rear, Q);
        Q->Array[Q->Rear] = X;
    }
}
ElementType Front(Queue Q)
{
    if(!IsEmpty(Q))
        return Q->Array[Q->Front];
    Error("Empty queue");
    return 0;  /* Return value used to avoid warning */
}
void Dequeue(Queue Q)
{
    if(IsEmpty(Q))
        Error( "Empty queue" );
    else
    {
        Q->Size--;
        Q->Front = Succ(Q->Front, Q);
    }
}
ElementType FrontAndDequeue(Queue Q)
{
    ElementType X = 0;
    if(IsEmpty(Q))
        Error("Empty queue");
    else
    {
        Q->Size--;
        X = Q->Array[Q->Front];
        Q->Front = Succ(Q->Front, Q);
    }
    return X;
}

Tags:数据结构 队列 队列

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接