home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / snip9707.zip / DEQUE.H < prev    next >
C/C++ Source or Header  |  1997-07-05  |  1KB  |  58 lines

  1. /* +++Date last modified: 05-Jul-1997 */
  2.  
  3. /*
  4.  *  File : DEQUE.H
  5.  *
  6.  *  Peter Yard  02 Jan 1993.
  7.  */
  8.  
  9. #ifndef DEQUEUE__H
  10. #define DEQUEUE__H
  11.  
  12. #include "sniptype.h"                     /* For True_, False_    */
  13.  
  14.  
  15. typedef struct nodeptr datanode;
  16.  
  17. typedef struct nodeptr {
  18.       void        *data ;
  19.       datanode    *prev, *next ;
  20. } node ;
  21.  
  22. typedef struct {
  23.       node        *head, *tail, *cursor;
  24.       int         size, sorted, item_deleted;
  25. } queue;
  26.  
  27. typedef  struct {
  28.       void        *dataptr;
  29.       node        *loc ;
  30. } index_elt ;
  31.  
  32.  
  33. int    Q_Init(queue  *q);
  34. int    Q_Empty(queue *q);
  35. int    Q_Size(queue *q);
  36. int    Q_Start(queue *q);
  37. int    Q_End(queue *q);
  38. int    Q_PushHead(queue *q, void *d);
  39. int    Q_PushTail(queue *q, void *d);
  40. void  *Q_First(queue *q);
  41. void  *Q_Last(queue *q);
  42. void  *Q_PopHead(queue *q);
  43. void  *Q_PopTail(queue *q);
  44. void  *Q_Next(queue *q);
  45. void  *Q_Previous(queue *q);
  46. void  *Q_DelCur(queue *q);
  47. void  *Q_Get(queue *q);
  48. int    Q_Put(queue *q, void *data);
  49. int    Q_Sort(queue *q, int (*Comp)(const void *, const void *));
  50. int    Q_Find(queue *q, void *data,
  51.               int (*Comp)(const void *, const void *));
  52. void  *Q_Seek(queue *q, void *data,
  53.               int (*Comp)(const void *, const void *));
  54. int    Q_Insert(queue *q, void *data,
  55.                 int (*Comp)(const void *, const void *));
  56.  
  57. #endif /* DEQUEUE__H */
  58.