实现了二项队列的基本功能,参考书籍 数据结构与算法分析 C描述
头文件
#ifndef _BINQUEUE_H
#define _BINQUEUE_H
struct Binnode;
struct Collection;
typedef struct Collection *BinQueue;
typedef struct Binnode *BinTree;
typedef int Item;
typedef struct Binnode *Position;
BinQueue initial(void);
int isEmpty(BinQueue Q);
static BinTree combineTree(BinTree b1,BinTree b2);
static BinTree make_tree(Item it);
BinQueue merge(BinQueue Q1,BinQueue Q2);
BinQueue insert(Item it,BinQueue Q);
Item deleteMin(BinQueue Q);
#endif
struct Binnode{
Item item;
Position leftChild;
Position nextBro;
};
struct Collection{
int size;
BinTree *forest;
};
实现源文件
#include"binqueue.h"
#include<stdio.h>
#include<stdlib.h>
#define TREESIZE 20
#define NODESIZE 2<<20-1
BinQueue initial(){
BinQueue Q;
Q=(BinQueue)malloc(sizeof(struct Collection));
if(Q==NULL){
puts("arrange col