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

2021-07-04 16:11:37 字數 812 閱讀 1140

源**如下:

/*

一棵二次冪堆是一棵左有序的堆,由右子樹為空左子樹為完全二叉樹構成的根組成

二項佇列:是二次冪堆的乙個集合。 其中不存在相等大小的堆。其結構由佇列節點數目確定

對應整數的二進位制表示。

*/ #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...