源**如下:
/*
一棵二次冪堆是一棵左有序的堆,由右子樹為空左子樹為完全二叉樹構成的根組成
二項佇列:是二次冪堆的乙個集合。 其中不存在相等大小的堆。其結構由佇列節點數目確定
對應整數的二進位制表示。
*/ #include #include #define maxbqsize 40
typedef struct pqnode* pqlink;
typedef struct pq* pq;
struct item;
struct pqnode;
struct pq;
pqlink z = null;
//連線兩個大小相等的二次冪堆
pqlink pair(pqlink p,pqlink q) else
}//插入操作
pqlink pqinsert(pq pq, item v)
c = pair(c,pq->bq[i]);pq->bq[i] = z;
} return t;
}//兩個二項佇列中的合併操作
#define test(c,b,a) 4*(c) + 2*(b) + 1*(a)
void bqjoin(pqlink *a, pqlink *b)
x = pq->bq[max]->l;
for(i=max;i0;i--)
free(pq->bq[max]);pq->bq[max] = z;
bqjoin(pq->bq,temp);
return v;
}main()
鏈佇列插入,刪除,查詢操作的實現
include include define true 1 define false 0 using namespace std typedef struct linkqueuenodelinkqueuenode typedef struct linkqueuelinkqueue linkqueue...
二項佇列的建立及其基本操作
include include 二項佇列支援合併,插入,刪除最小值等操作,且每次操作最壞花費log n 二項佇列不是乙個堆序,而是一群堆序的集合 define infinity 10000 define maxtrees 14 capacity size 2 14 1 define capacity...
佇列的插入 刪除操作
include using namespace std typedef int elemtype typedef struct node qnode,queueptr typedef struct linkqueue void initqueue linkqueue q int isempty li...