用堆封裝優先順序佇列

2021-08-19 22:45:23 字數 1164 閱讀 2000

1、優先順序佇列

優先佇列是一種資料結構,能夠保證每次出隊的是佇列中優先順序最高的元素(可以自己定義比較器),使用堆的堆頂元素維護這個優先順序最高的元素,因為堆具有堆序性,堆頂元素要麼是最小的,要麼是最大的。

2、具體**實現

**中用到的堆

priorityqueue.h

#pragma once 

#include "heap.h"

typedef struct priorityqueue

priorityqueue;

//初始化佇列

void priorityqueueinit(priorityqueue *q, compare com);

//入隊

void queuepush(priorityqueue *q, datatype data);

//出隊

void queuepop(priorityqueue *q);

//檢視堆頂元素

datatype queuetop(priorityqueue *q);

//檢視隊長

int queuesize(priorityqueue *q);

//判斷佇列是否為空

int queueempty(priorityqueue *q);

//測試

void testqueue();

priorityqueue.c
#include

"priorityqueue.h"

//初始化佇列

void priorityqueueinit(priorityqueue *q, compare com)

//入隊

void queuepush(priorityqueue *q, datatype data)

//出隊

void queuepop(priorityqueue *q)

//檢視堆頂元素

datatype queuetop(priorityqueue *q)

//檢視隊長

int queuesize(priorityqueue *q)

//判斷佇列是否為空

int queueempty(priorityqueue *q)

void testqueue()

用堆實現優先順序佇列

申明 要用到堆的基本操作 鏈結為 typedef struct priorityqueue priorityqueue 優先順序佇列初始化 void priorityqueueinit priorityqueue q,compare com 向佇列中插入元素 void priorityqueuepu...

堆(優先順序佇列)

c 的 stl 中提供了 優先佇列 這一容器,它和普通的 fifo 佇列都定義在 中,有 push 和 pop 過程,分別表示 往佇列裡加入新元素 和 從佇列裡刪除隊首元素 唯一的區別是,在優先佇列中,元素並不是按照進入佇列的先後順序排列,而是按照優先順序的高低順序排列 換句話說,pop 刪除的是優...

堆 優先順序佇列

1一般二叉樹的順序儲存 層序遍歷方式 使用陣列儲存二叉樹結構,即將二叉樹 按照層序遍歷 的方式放入陣列.這種方式一般只適用於完全二叉樹,一般的二叉樹會造成空間浪費比較嚴重.2堆 heap 在邏輯上就是乙個 完全二叉樹,在物理上儲存在 陣列 中.1 滿足任意結點的值都大於其子樹的結點的值.叫做大堆,反...