?? queue.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 + -