红黑树的代码实现..doc
文本预览下载声明
//by svking
//2012.5
#include stdio.h#include stdlib.h#include time.h#define MAXSIZE 1000typedef int ElemType;#define RED 0#define BLACK 1typedef struct RBTNode{ char color; ElemType data; struct RBTNode * p; struct RBTNode * left; struct RBTNode * right;}RBTNode, * PRBTNode;typedef struct RBTree{ PRBTNode root; PRBTNode nil; //统一的空节点,该节点是黑的}RBTree, * PRBTree;int leftRotate (PRBTree tree, PRBTNode t);int rightRotate (PRBTree tree, PRBTNode t);PRBTNode insertRB (PRBTree tree, ElemType d);int insertRB_fixup (PRBTree tree, PRBTNode t);int createRBTree (PRBTree tree, ElemType d[], int n);int initRB (PRBTree tree);PRBTNode maximum (PRBTree tree, PRBTNode t);PRBTNode minimum (PRBTree tree, PRBTNode t);PRBTNode next (PRBTree tree, PRBTNode t);PRBTNode precursor (PRBTree tree, PRBTNode t);int walkNext (PRBTree tree);int inOrderWalk (PRBTree tree, PRBTNode t);int deleteRB_fixup (PRBTree tree, PRBTNode c);PRBTNode deleteRB (PRBTree tree, PRBTNode t);int main (){ PRBTNode p; int d[MAXSIZE]; int n = 0; int i; RBTree tree; initRB(tree); /* insertRB(tree, 11); insertRB(tree, 2); insertRB(tree, 14); insertRB(tree, 1); insertRB(tree, 7); insertRB(tree, 15); insertRB(tree, 5); insertRB(tree, 8); insertRB(tree, 4); */ p= insertRB(tree, 26); insertRB(tree, 17); insertRB(tree, 41); insertRB(tree, 14); insertRB(tree, 21); insertRB(tree, 30); insertRB(tree, 47); insertRB(tree, 10); insertRB(tree, 16); insertRB(tree, 19); insertRB(tree, 23); insertRB(tree, 28); insertRB(tree, 38); insertRB(tree, 7); insertRB(tree, 12); insertRB(tree, 15); insertRB(tree, 20); insertRB(tree, 3); insertRB(tree, 35); insertRB(tree, 39); srand(time(NULL)); /* puts(请输入数据的个数:); scanf(%d,n); printf(随机生成的%d个数据是:\n,n); for (i = 0; i n; i++)
显示全部