预处理
# include <stdio.h>
# include <stdlib.h>
# include <assert.h>
# define MAX 10
封装队列
typedef struct Queue {
size_t * pMemory;
short topSize;
short tailSize;
unsigned short curSize;
} * LPQUEUE, QUEUE;
创建队列
LPQUEUE CreateQueue ( ) {
LPQUEUE queue = ( LPQUEUE) malloc ( sizeof ( QUEUE) ) ;
assert ( queue) ;
queue-> curSize = 0 ;
queue-> pMemory = ( size_t * ) calloc ( MAX, sizeof ( size_t ) ) ;
assert ( queue-> pMemory) ;
queue-> tailSize = - 1 ;
queue-> topSize = - 1 ;
return queue;
}
入队
void Push ( LPQUEUE queue, int data) {
if ( queue-> curSize == MAX)
return ;
queue-> pMemory[ ++ queue-> tailSize] = data;
queue-> curSize++ ;
}
获取对头元素
int front ( LPQUEUE queue) {
return queue-> pMemory[ queue-> topSize] ;
}
出队
void Pop ( LPQUEUE queue) {
if ( queue-> curSize == 0 )
return ;
queue-> topSize++ ;
queue-> curSize-- ;
}
判断队列是否为空
bool temp ( LPQUEUE queue) {
return queue-> curSize == 0 ;
}
测试代码
int main ( ) {
LPQUEUE queue = CreateQueue ( ) ;
printf ( "\n入队:\t" ) ;
for ( int i = 0 ; i < MAX; i++ ) {
printf ( "%d\t" , i) ;
Push ( queue, i) ;
}
printf ( "\n出队:\t" ) ;
while ( ! temp ( queue) ) {
Pop ( queue) ;
printf ( "%d\t" , front ( queue) ) ;
}
return 0 ;
}
运行效果