优先级队列

发布时间:2026/5/27 17:07:04

优先级队列 优先级队列结构体定义static const int InitQueSize 100; static const int NicSize 2; struct PriQueue { int* data; int maxsize; int cursize; };初始化函数void InitPriQueue(PriQueue* pq) { assert(pq ! nullptr); pq-maxsize InitQueSize; pq-cursize 0; pq-data (int*)malloc(sizeof(int) * pq-maxsize); if (pq-data nullptr) { exit(EXIT_FAILURE); } }摧毁函数void DestroyPriQueue(PriQueue* pq) { assert(pq ! nullptr); free(pq-data); pq-data nullptr; pq-cursize 0; pq-maxsize 0; }判空、判满、获取大小int getSize(const PriQueue* pq) { assert(pq ! nullptr); return pq-cursize; } bool IsEmpty(const PriQueue* pq) { assert(pq ! nullptr); return getSize(pq) 0; } bool IsFull(const PriQueue* pq) { assert(pq ! nullptr); return getSize(pq) pq-maxsize; }入队void Push(PriQueue* pq, int val) { assert(pq ! nullptr); if (IsFull(pq)) return; pq-data[pq-cursize] val; FilterUp(pq-data, pq-cursize);//cursize下标 pq-cursize 1; }查看队列中优先级最高的元素bool Top(const PriQueue* pq, int* pval) { assert(pq ! nullptr pval ! nullptr); if (IsEmpty(pq)) return false; *pval pq-data[0]; return true; }删除队列中优先级最高的元素void Pop(PriQueue* pq) { assert(pq ! nullptr); if (IsEmpty(pq)) return; pq-data[0] pq-data[pq-cursize - 1]; pq-cursize - 1; FilterDown(pq-data, 0, pq-cursize - 1); }

相关新闻