home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / CPM / LANGUAGS / C / MFILE.LBR / DEQUEUE.CZ / DEQUEUE.C
Text File  |  2000-06-30  |  1KB  |  54 lines

  1. /* dequeue.c - support routines to manage a doubly linked queue */
  2.  
  3. #include <stdio.h>
  4.  
  5. #include "dequeue.h"
  6.  
  7. #define ERROR -1
  8.  
  9. QUEUE    Nodeq = {&Nodeq, &Nodeq, ERROR}; /* semaphore element */
  10. QUEUE    *qNode = &Nodeq;        /* pointer to semaphore */
  11.  
  12. void mDeQue(f)    /* remove element f from dequeue */
  13. QUEUE    *f;
  14. {
  15. #if defined(DEBUG) && defined(QDEBUG)
  16. printf("mDeQue:");
  17. qDump();
  18. #endif
  19.     f->pNode->nNode = f->nNode;
  20.     f->nNode->pNode = f->pNode;
  21.     /* make degenerate solitary queue */
  22.     f->pNode = f->nNode = f;
  23. #if defined(DEBUG) && defined(QDEBUG)
  24. qDump();
  25. #endif
  26. }
  27.  
  28. void mEnQue(f)    /* add element f to head of dequeue */
  29. QUEUE    *f;
  30. {
  31. #if defined(DEBUG) && defined(QDEBUG)
  32. printf("mEnQue:",f);
  33. dump(f);
  34. qDump();
  35. #endif
  36.     f->nNode = firstNode;
  37.     f->pNode = qNode;
  38.     firstNode->pNode = f;
  39.     firstNode = f;
  40. #if defined(DEBUG) && defined(QDEBUG)
  41. qDump();
  42. #endif
  43. }
  44.  
  45. void mSplice(f)    /* move element f to head of dequeue */
  46. QUEUE    *f;
  47. {
  48.     mDeQue(f);
  49.     mEnQue(f);
  50. }
  51.  
  52. /* end of dequeue.c */
  53.  
  54.