gft_pqueue16.h
Go to the documentation of this file.
1 
2 #ifndef _GFT_PQUEUE16_H_
3 #define _GFT_PQUEUE16_H_
4 
5 #include "gft_common.h"
6 
7 namespace gft{
8  namespace PQueue16{
9 
10  typedef struct _pqnode {
11  int next;
12  int prev;
13  char color;
14  } PQNode;
15 
16  typedef struct _pqdoublylinkedlists {
18  int nelems;
21 
22  typedef struct _pqcircularqueue {
23  int *first;
24  int *last;
25  int nbuckets;
29 
30 
35  typedef struct _priorityqueue {
38  int nadded;
39  } PQueue16;
40 
41 
42  PQueue16 *Create(int nbuckets, int nelems, ushort *value);
43  void Destroy(PQueue16 **Q);
44  PQueue16 *Grow(PQueue16 **Q, int nbuckets);
45  void Reset(PQueue16 *Q);
46  inline bool IsEmpty(PQueue16 *Q){
47  return (Q->nadded==0);
48  }
49  inline bool IsFull(PQueue16 *Q){
50  return (Q->nadded==(Q->L).nelems);
51  }
52 
56  void InsertElem(PQueue16 **Q, int elem);
60  void RemoveElem(PQueue16 *Q, int elem);
64  void UpdateElem(PQueue16 **Q, int elem, ushort newvalue);
68  int RemoveMinFIFO(PQueue16 *Q);
72  int RemoveMinLIFO(PQueue16 *Q);
76  int RemoveMaxFIFO(PQueue16 *Q);
80  int RemoveMaxLIFO(PQueue16 *Q);
81 
82 
87  void FastInsertElem(PQueue16 *Q, int elem);
92  void FastRemoveElem(PQueue16 *Q, int elem);
97  void FastUpdateElem(PQueue16 *Q, int elem, ushort newvalue);
102  int FastRemoveMinFIFO(PQueue16 *Q);
107  int FastRemoveMinLIFO(PQueue16 *Q);
112  int FastRemoveMaxFIFO(PQueue16 *Q);
117  int FastRemoveMaxLIFO(PQueue16 *Q);
118 
119 
120  } //end PQueue16 namespace
121 } //end gft namespace
122 
123 #endif
124 
125 
ushort maxvalue
Maximum value of a node in queue.
Definition: gft_pqueue16.h:27
struct gft::PQueue16::_priorityqueue PQueue16
Priority queue by Dial implemented as proposed by A.X. Falcao with circular and growing features...
struct gft::PQueue16::_pqcircularqueue PQCircularQueue
char color
WHITE=0, GRAY=1, BLACK=2.
Definition: gft_pqueue16.h:13
int nadded
Number of elements added.
Definition: gft_pqueue16.h:38
void RemoveElem(PQueue16 *Q, int elem)
Definition: gft_pqueue16.cpp:130
PQCircularQueue C
Definition: gft_pqueue16.h:36
void InsertElem(PQueue16 **Q, int elem)
Definition: gft_pqueue16.cpp:94
int next
Next node.
Definition: gft_pqueue16.h:11
int FastRemoveMaxFIFO(PQueue16 *Q)
Definition: gft_pqueue16.cpp:414
PQueue16 * Create(int nbuckets, int nelems, ushort *value)
Definition: gft_pqueue16.cpp:8
void UpdateElem(PQueue16 **Q, int elem, ushort newvalue)
Definition: gft_pqueue16.cpp:163
int * last
List of the last elements of each doubly-linked list.
Definition: gft_pqueue16.h:24
bool IsFull(PQueue16 *Q)
Definition: gft_pqueue16.h:49
int RemoveMaxFIFO(PQueue16 *Q)
Definition: gft_pqueue16.cpp:285
struct gft::PQueue16::_pqnode PQNode
PQueue16 * Grow(PQueue16 **Q, int nbuckets)
Definition: gft_pqueue16.cpp:49
PQNode * elem
All possible doubly-linked lists of the circular queue.
Definition: gft_pqueue16.h:17
int nelems
Total number of elements.
Definition: gft_pqueue16.h:18
int nbuckets
Number of buckets in the circular queue.
Definition: gft_pqueue16.h:25
void FastInsertElem(PQueue16 *Q, int elem)
Definition: gft_pqueue16.cpp:302
Definition: gft_pqueue16.h:16
Header file for common definitions and function prototypes.
struct gft::PQueue16::_pqdoublylinkedlists PQDoublyLinkedLists
int RemoveMinFIFO(PQueue16 *Q)
Definition: gft_pqueue16.cpp:269
bool IsEmpty(PQueue16 *Q)
Definition: gft_pqueue16.h:46
int FastRemoveMaxLIFO(PQueue16 *Q)
Definition: gft_pqueue16.cpp:421
PQDoublyLinkedLists L
Definition: gft_pqueue16.h:37
Priority queue by Dial implemented as proposed by A.X. Falcao with circular and growing features...
Definition: gft_pqueue16.h:35
ushort minvalue
Minimum value of a node in queue.
Definition: gft_pqueue16.h:26
void Reset(PQueue16 *Q)
Definition: gft_pqueue16.cpp:77
void FastRemoveElem(PQueue16 *Q, int elem)
Definition: gft_pqueue16.cpp:324
int FastRemoveMinLIFO(PQueue16 *Q)
Definition: gft_pqueue16.cpp:407
Definition: gft_pqueue16.h:22
ushort * value
The value of the nodes in the graph.
Definition: gft_pqueue16.h:19
int prev
Previous node.
Definition: gft_pqueue16.h:12
int FastRemoveMinFIFO(PQueue16 *Q)
Definition: gft_pqueue16.cpp:399
unsigned short ushort
Definition: gft_common.h:38
int RemoveMinLIFO(PQueue16 *Q)
Definition: gft_pqueue16.cpp:277
int RemoveMaxLIFO(PQueue16 *Q)
Definition: gft_pqueue16.cpp:293
Definition: gft_pqueue16.h:10
int * first
List of the first elements of each doubly-linked list.
Definition: gft_pqueue16.h:23
void FastUpdateElem(PQueue16 *Q, int elem, ushort newvalue)
Definition: gft_pqueue16.cpp:350
void Destroy(PQueue16 **Q)
Definition: gft_pqueue16.cpp:36