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

📄 queue.cpp

📁 参照网上的例子改写的多叉树的读写程序
💻 CPP
字号:
#include <stdio.h>

   #include <malloc.h>

   #include "queue.h" 


   queue * MakeQueue( int qsize, int objsize )

   {

             queue * qp; 


             if( !( qp = ( queue * )malloc( sizeof( queue ) + qsize * objsize )

                           ) )

                    return( NULL );

             qp->start = ( char * )( qp + 1 );

             qp->size = qsize;

             qp->objsize = objsize;

             qp->head = 0;

             qp->tail = 0;

             qp->nobj = 0;

             return( qp );

   } 


   int DelQueue( queue *qp )

   {

             if( qp->nobj )

                    return( 0 );

             free( qp );

             return( 1 );

   } 


   int EnterQueue( char * obj, queue * qp )

   {

              int i;

              char * bp; 


              if( qp->nobj >= qp->size )

                     return( 0 );

              qp->nobj ++;

              bp = qp->start + ( qp->objsize * qp->tail );

              for( i = qp->objsize; -- i >= 0; *bp++ = *obj ++ )

                            ;

              if( ++ qp->tail >= qp->size )

                     qp->tail = 0;

              return( 1 );

   } 


   int DeleteTailQueue( char * obj, queue * qp )

   {

             int i;

             char * bp; 


             if( qp->nobj <= 0 )

                    return( 0 );

             qp->nobj --;

             if( -- qp->tail < 0 )

                    qp->tail = qp->size - 1;

             bp = qp->start + ( qp->objsize * qp->tail );

             for( i = qp->objsize; -- i >= 0; *obj++ = *bp ++ )

                           ;

             return( 1 );

   } 


   int EnterHeadQueue( char * obj, queue * qp )

   {

             short i;

             char * bp; 


             if( qp->nobj >= qp->size )

                    return( 0 );

             qp->nobj ++;

             if( -- qp->head < 0 )

                    qp->head = qp->size - 1;

             bp = qp->start + ( qp->objsize * qp->head );

             for( i = qp->objsize; -- i >= 0; *bp++ = *obj ++ )

                           ;

             return( 1 );

   } 


   int GetElementQueue( char * obj, queue * qp )

   {

             short i;

             char  *bp; 


             if( qp->nobj <= 0 )

                    return( 0 );

             qp->nobj --;

             bp = qp->start + ( qp->objsize * qp->head );

             for( i = qp->objsize; --i >= 0; *obj ++ = *bp ++ )

                           ;

             if( ++ qp->head >= qp->size )

                    qp->head = 0;

             return( 1 );

   } 


   char  * ShowNextQueue( queue * qp )

   {

             return( qp->start + ( qp->head * qp->objsize ) );

   } 


   int SpUsedQueue( queue * qp )

   {

              return ( qp->nobj );

   } 


   short SpAvailQueue( queue *qp )

   {

              return( qp->size - qp->nobj );

   } 


⌨️ 快捷键说明

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