最小堆,能夠維護最的的元素的最上面。同樣還有最大堆等
#include
#include
typedef int elementtype;
elementtype mindate = -10000 ;
struct heapstruct;
typedef struct heapstruct *priorityqueue;
priorityqueue initialize(int maxelement); //建立並初始化
void destory(priorityqueue h); //銷毀最小堆
void makeempty(priorityqueue h); //清空堆
void insert(elementtype x,priorityqueue h); //插入x
elementtype deletemin(priorityqueue h); //刪除堆中最小值
elementtype findmin(priorityqueue h); //查詢最小值,返回最小值
int isempty(priorityqueue h); //判空
int isfull(priorityqueue h); //判滿
int main(void) //主函式,最小堆,利用順序儲存結構
struct heapstruct
;priorityqueue initialize(int maxelement) //建立並初始化乙個最小堆
//為結構體中陣列發配空間,其中儲存每個元素
h->elements = (elementtype*)malloc((maxelement + 1) * sizeof(elementtype));
if(null == h->elements )
h->capacity = maxelement; //儲存陣列最大值
h->size = 0; //初始化size
h->elements[0] = mindate; //初始化最小值
return h;
}void insert(elementtype x, priorityqueue h)
//每次插入一次,size++一次。建立乙個空穴
for(i = ++h->size; h->elements[i / 2] > x;i /= 2) //如果x小於父親的值,空穴上移一層
h->elements[i] = x; //將x填入空穴
}void destory(priorityqueue h)
void makeempty(priorityqueue h)
/*刪除最小元比較容易,因為堆中第乙個元素就是最小元。難的是刪除最小元後,怎麼維護這個最小堆。
一種思路是,將兒子節點中較小的那個提為父親,一直這樣下去,直到最後一層。也就是將空穴一直
沿著最小元傳遞下去
*/elementtype deletemin(priorityqueue h) //刪除堆中最小值
minelement = h->elements[1]; //堆中最小的元素
lastelement = h->elements[h->size--]; //堆中最後乙個元素,因為從陣列從1開始,所以要size--
//並且size--,也標誌著陣列中元素減一
for(i = 1; i * 2 <= h->size; i = child )
h->elements[i] = lastelement;
return minelement;
}elementtype findmin(priorityqueue h) //堆中最小元為陣列下標為1的元素
return h->elements[1];
}int isempty(priorityqueue h) //如果陣列大小為0的話,陣列為空
int isfull(priorityqueue h) //如果陣列的大小為最大值的話,陣列滿了
Git 的使用及其一些基本用法
git config global user.name your name git config global user.email your email 為github 賬戶設定ssh key 最後新增乙個檔案測試 初始化git git init 將 新增到本地倉庫中 git add commit...
swift之建立陣列,字典及其一些用法
對於swift而言,建立陣列和oc大致是一樣的,我們可以直接用方括號來告訴系統,我要建立陣列了啊,你得識別我啊,而字典就有所不同了,在oc中是大括號,但是在swift中也是中括號,看下邊的例子 var firstarr 1 2 3 var firstdic 1 i 2 love 3 you 上邊就是...
環形佇列的建立以及一些基本的操作
我們的環形佇列長什麼樣子的尼,那幾句話也描述不出來概括不了他的樣子,還是拿一張圖看一下吧 原始檔完善函式介面 include queue.h include include include plistnode buylistnode qdatatype data pnewnode data data...