queue.c

来自「c语言库函数!里面包含了所以c语言中的系统函数的实现及其详细说明和代码!请大家及」· C语言 代码 · 共 64 行

C
64
字号
/* +++Date last modified: 05-Jul-1997 */

/*
+----------------------------------------------------+
|               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 + -
显示快捷键?