二十四 資料結構之斜堆

2021-09-25 01:18:18 字數 1006 閱讀 6987

和左式堆性質差不過,只不過去掉了npl的限制,每對右子樹進行一次操作將交換一下該結點的兩兒子。

#include #include //定義資料型別

typedef int elemtype;

typedef struct heapnode *priorityqueue;

priorityqueue merge(priorityqueue q1, priorityqueue q2);

priorityqueue mergecomponent(priorityqueue q1, priorityqueue q2);

//定義斜堆儲存結構

typedef struct heapnode

heapnode;

//獲取乙個初始化的佇列

priorityqueue initilization()

//交換左右子樹,逐層形成斜堆結構

void swapqueue(priorityqueue queue)

//進行合併操作入口

priorityqueue merge(priorityqueue q1, priorityqueue q2)

if(q2 == null)

if(q1 -> data > q2 -> data)

else }

//進行合併操作的元件, q1永遠是元素較小值的結點

priorityqueue mergecomponent(priorityqueue q1, priorityqueue q2)

else

return q1;

}//進行插入操作

priorityqueue insert(priorityqueue queue, elemtype data)

//進行出列操作,刪除最小值

priorityqueue deletemin(priorityqueue queue)

int main(void)

資料結構與演算法(二十四)

給定乙個陣列和滑動視窗的大小,請找出所有滑動視窗裡的最大值。例如,如果輸入陣列及滑動視窗的大小3,那麼一共存在6個滑動視窗,它們的最大值分別為 1 乙個滑動視窗可以看成乙個佇列。當視窗滑動時,處於視窗的第乙個數字被刪除,同時在視窗的末尾新增乙個新的數字。這符合佇列 先進先出 特性。2 題意 陣列中的...

學習C C 的第二十四天 資料結構 4 堆

堆 最大堆特點 a 每個節點最多可以有兩個節點 b 根節點的鍵值是所有堆節點鍵值的最大者,且每個節點的值都比其孩子的值大。c 除了根節點沒有兄弟節點,最後乙個左子節點可以沒有兄弟節點,其他節點必須有兄弟節點。堆是最有個性的樹!它是用陣列表示的樹 i的子節點左 2i 1 i的右子節點 2i 2 i的父...

C 資料結構之堆 二十八

參考部落格1 資料結構 堆 heap 參考部落格2 資料結構堆的各種操作與演算法,程式設計師必備基礎資料結構 簡單介紹 參考部落格3 資料結構 堆 heap 在後台開發人員的面試中,有這麼乙個經典的題目,我們有一堆定時任務,每個任務都有執行時間,這堆定時任務還有可能會不停的增加,要求我們設計乙個資料...