插入和列印功能完備的二項堆

2021-06-02 08:42:16 字數 863 閱讀 2061

其中在union時時候故意加的wrap_head很有意義,另外列印階段採用的是深度優先,還能列印合理的層數.

#include 

#include 

#define  nil  9999

typedef  struct  _binheap

binheap;

binheap  *  newconstruct ( int key)

binheap  *  nilconstruct ()

else

return  nilobj;

}binheap * binheap_merge ( binheap *left , binheap *right )

if( !right)

if( left->degree < right->degree)

else

}void  re_link (binheap *left , binheap *right )

binheap * binheap_union ( binheap *left , binheap *right )

if(! x->sib)

else

else

else

}else

else

}else

}}}  

}return  wrap_head->sib;

}void insert ( int key ,binheap * * head)

else

}void  print(binheap *head,int level)

else

}int main()

;for(i=0;iprint(head,0);

}

自動測試二項堆的插入和彈出

include include include define nil 10000 define max 10000 define rand 10000 typedef struct binheap binheap typedef struct wrapbinheap wrapbinheap wrap...

二項樹和二項堆(Binomial Heaps)

二項樹bk是一種遞迴定義的有序樹。二項樹b0只包含乙個結點。二項樹bk由兩個子樹bk 1連線而成 其中一棵樹的根是另一棵樹的根的最左孩子。二項樹bk 具有以下性質 1 共有2的 k次方個結點 2 樹的高度為k 3 在深度 i處恰有 上 k,下i 因此叫二項樹 個結點,其中 i 0,k 4 根的度數為...

二項佇列的查詢插入合併操作

源 如下 一棵二次冪堆是一棵左有序的堆,由右子樹為空左子樹為完全二叉樹構成的根組成 二項佇列 是二次冪堆的乙個集合。其中不存在相等大小的堆。其結構由佇列節點數目確定 對應整數的二進位制表示。include include define maxbqsize 40 typedef struct pqno...