queue.c

来自「国外网站上的一些精典的C程序」· C语言 代码 · 共 62 行

C
62
字号
/*+----------------------------------------------------+|               Thunderbird Software                 |+----------------------------------------------------+| Filespec  :  Queue.c                               || Date      :  September 29, 1994                    || Time      :  10:16AM                               || Revision  :  1.0                                   |+----------------------------------------------------+| Programmer:  Scott Andrews                         || Address   :  5358 Summit RD SW                     || City/State:  Pataskala, Ohio                       || Zip       :  43062                                 |+----------------------------------------------------+| Released to the Public Domain                      |+----------------------------------------------------+*/#include <stdlib.h>#include "queue.h"QUEUE *alloc_queue( int size){ QUEUE *retval;  retval = (QUEUE *) malloc( sizeof( QUEUE) + (size_t) size);  if ( (QUEUE *) 0 != retval)  {  retval->size = size;     retval->head = 0;     retval->tail = 0;     retval->avail = size;     retval->buffer = ( (char *) retval) + sizeof( QUEUE);  }  return retval;}int en_queue( QUEUE *queue, char data){ int retval = -1;  if ( 0 != queue->avail)  {  *( queue->buffer + queue->head) = data;     queue->head += 1;     if ( queue->head == queue->size)        queue->head = 0;     queue->avail -= 1;     retval = queue->avail;  }  return retval;}int de_queue( QUEUE *queue){ int retval = -1;  if ( queue->avail != queue->size)  {  retval = *( queue->buffer + queue->tail);     queue->tail += 1;     if ( queue->tail == queue->size)        queue->tail = 0;     queue->avail += 1;  }  return retval;}/* End of Queue.c */

⌨️ 快捷键说明

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