minpq.h
上传用户:lwxipeng
上传日期:2022-05-16
资源大小:15982k
文件大小:2k
源码类别:

视频捕捉/采集

开发平台:

Visual C++

  1. /**@file
  2. Functions and structures for implementing a minimizing priority queue.
  3. Copyright (C) 2006  Rob Hess <hess@eecs.oregonstate.edu>
  4. @version 1.1.1-20070330
  5. */
  6. #ifndef MINPQ_H
  7. #define MINPQ_H
  8. #include <stdlib.h>
  9. /******************************* Defs and macros *****************************/
  10. /* initial # of priority queue elements for which to allocate space */
  11. #define MINPQ_INIT_NALLOCD 512
  12. /********************************** Structures *******************************/
  13. /** an element in a minimizing priority queue */
  14. struct pq_node
  15. {
  16. void* data;
  17. int key;
  18. };
  19. /** a minimizing priority queue */
  20. struct min_pq
  21. {
  22. struct pq_node* pq_array;    /* array containing priority queue */
  23. int nallocd;                 /* number of elements allocated */
  24. int n;                       /**< number of elements in pq */
  25. };
  26. /*************************** Function Prototypes *****************************/
  27. /**
  28. Creates a new minimizing priority queue.
  29. */
  30. extern struct min_pq* minpq_init();
  31. /**
  32. Inserts an element into a minimizing priority queue.
  33. @param min_pq a minimizing priority queue
  34. @param data the data to be inserted
  35. @param key the key to be associated with a data
  36. @return Returns 0 on success or 1 on failure.
  37. */
  38. extern int minpq_insert( struct min_pq* min_pq, void* data, int key );
  39. /**
  40. Returns the element of a minimizing priority queue with the smallest key
  41. without removing it from the queue.
  42. @param min_pq a minimizing priority queue
  43. @return Returns the element of a min_pq with the smallest key or NULL
  44. if a min_pq is empty
  45. */
  46. extern void* minpq_get_min( struct min_pq* min_pq );
  47. /**
  48. Removes and returns the element of a minimizing priority queue with the
  49. smallest key.
  50. @param min_pq a minimizing priority queue
  51. @return Returns the element of a min_pq with the smallest key of NULL
  52. if a min_pq is empty
  53. */
  54. extern void* minpq_extract_min( struct min_pq* min_pq );
  55. /**
  56. De-allocates the memory held by a minimizing priorioty queue
  57. @param min_pq pointer to a minimizing priority queue
  58. */
  59. extern void minpq_release( struct min_pq** min_pq );
  60. #endif