1、隨機生成一棵完全二叉樹
2、調整結點56及其子樹
3、調整結點77及其子樹
4、調整結點45及其子樹
5、調整結點18及其子樹
6、調整結點29及其子樹
(1)調整幾點29及其左、右兒子
(2)調整結點29及其左、右兒子
1、取出當前最小元素3
(1)掐尖
(2)將結點65放到堆頂
(3)交換結點65與結點7
(4)交換節點65與結點29
2、取出當前最小元素7
(1)掐尖
(2)將結點30放到堆頂
(3)交換結點30與結點18
(4)交換結點30與結點29』
(5)已形成乙個新的堆,不用再交換
3、取出當前最小元素18
(1)掐尖
(2)將結點77放到堆頂
(3)交換結點77與結點29』
(4)交換結點77與結點30
說明:以上圖形為graphviz軟體所作。
資料結構 堆(建立,插入,刪除,排序)
關於二次總結是否有必要,我覺得是有的,參考學習別人的知識,內化的過程是一次總結的過程。每次參考同乙個人的思維軌跡,確實能培養思維。該篇筆記整理理由 在pat advanced level的heap path一題,參考了關於堆的正序遍歷的映象。於是參考一下堆相關筆記。void createheap v...
資料結構 雙鏈表的建立和操作
雙向鍊錶也叫雙鏈表,是鍊錶的一種,它的每個資料結點中都有兩個指標,分別指向直接後繼和直接前驅。所以,從雙向鍊錶中的任意乙個結點開始,都可以很方便地訪問它的前驅結點和後繼結點。一般我們都構造雙向迴圈鍊錶。注意 在實現的過程中,要分清前驅指標和後繼指標,不要把他們當成乙個指標。1 雙向鍊錶的實現 2 t...
堆(資料結構)及堆排序
這裡的堆是指一種資料結構 或資料結構屬性 非指堆記憶體。堆屬性用二叉樹來體現,具堆屬性的資料結構才可被叫做為堆。具堆屬性的資料結構滿足以下筆記的 順序 和 形狀 兩個條件。將某資料結構如陣列,將陣列的元素依次安排在二叉樹中的根結點 根結點的左孩子 根結點的右孩子位置之上,再將剩餘元素依次安排在根結點...