⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 queue.c

📁 清华大学出版的数据结构(C语言版)中书中所提到的所有C源程序的实现。
💻 C
字号:
        #include "queue.h"        #include "fatal.h"        #include <stdlib.h>        #define MinQueueSize ( 5 )        struct QueueRecord        {            int Capacity;            int Front;            int Rear;            int Size;            ElementType *Array;        };/* START: fig3_58.txt */        int        IsEmpty( Queue Q )        {            return Q->Size == 0;        }/* END */        int        IsFull( Queue Q )        {            return Q->Size == Q->Capacity;        }        Queue        CreateQueue( int MaxElements )        {            Queue Q;/* 1*/      if( MaxElements < MinQueueSize )/* 2*/          Error( "Queue size is too small" );/* 3*/      Q = malloc( sizeof( struct QueueRecord ) );/* 4*/      if( Q == NULL )/* 5*/          FatalError( "Out of space!!!" );/* 6*/      Q->Array = malloc( sizeof( ElementType ) * MaxElements );/* 7*/      if( Q->Array == NULL )/* 8*/          FatalError( "Out of space!!!" );/* 9*/      Q->Capacity = MaxElements;/*10*/      MakeEmpty( Q );/*11*/      return Q;        }/* START: fig3_59.txt */        void        MakeEmpty( Queue Q )        {            Q->Size = 0;            Q->Front = 1;            Q->Rear = 0;        }/* END */        void        DisposeQueue( Queue Q )        {            if( Q != NULL )            {                free( Q->Array );                free( Q );            }        }/* START: fig3_60.txt */        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;            }        }/* END */        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;        }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -