随笔分类 - 数据结构与算法-(bookC语言描述)
摘要:定义:二叉堆是一颗被完全填满的二叉树,底层是从左到右填入。即完全二叉树。一棵高为h的完全二叉树有2^h到2^(h+1)-1个节点。这个还是很好证明的。由于完全二叉树很有规律,所以我们用数组而不是指针来表示它。对于任意位置i上的元素,左儿子位置为2i,右儿子(2i+1),父亲为[i/2](向下取整) ...
阅读全文
摘要:一:散列函数①:如果输入的关键字是整数: 比较合理的方法就是直接返回"key mod TableSize"。当然这需要仔细考虑过,通常保证表的大小是素数,否则比如如果表的大小是10而关键字都以0结尾= =②:如果关键字是字符串: 通常会选择把ASCII码加起来。二:解决冲突的方法冲突就是值两个不...
阅读全文
摘要:由于栈比较简单就不写例程了啊> 2 #include 3 typedef struct QueueRecord *Queue; 4 #define MAXSIZE 5; 5 struct QueueRecord{ 6 int Front; 7 int Rear; 8 int...
阅读全文
摘要:一:定义链表是一系列不存在内存中相连的结构组成。每一个结构均含有表元素和指向包含该元素后继元素的结构的指针:Next指针。最后一个单元的Next指向NULL为了方便,我们使用表头(header)或哑节点(dummy node)来指向第一个节点二:操作具体链表例程见代码 1 #include 2 #...
阅读全文
摘要:注:此文多来自于海子博客:http://www.cnblogs.com/dolphin0520/archive/2011/08/25/2153720.html节点深度:从根到节点的路径长度,d(root)=0节点高度:从节点到树叶的最长路径的长,h(leaf)=0树高为根高,树的深度=树的高度树的遍...
阅读全文
摘要:定义与初始化:1 struct SplayNode{2 int Element;3 SplayTree left;4 SplayTree right;5 };View Code1 static SPosition NullNode = NULL; //伸展树中Null都指向N...
阅读全文
摘要:free(p):free之后,p指向的那块内存被释放,但p依旧指向那块内存。(怎么有种占着茅坑的感觉= =)。所以这时候操作系统会把这块内存分给别人,但p还是以为是自己的。所以这时候应该把p置为NULL,否则p就会乱改那块内存的东西。也就是所谓的野指针。
阅读全文
摘要:AVL是一种平衡的二叉树。它的作用是避免二叉树形成像链表那样的O(N)结构。条件:每个节点左子树与右子树的高度最多差1。我们在进行插入与删除时会改变其平衡性,于是引入旋转:旋转:对于需要重新平衡的那个点A来说,分为四种情况: ① 捣乱的在A左儿子的左子树 ② 捣乱的在A左儿子的右子树 ③ 捣乱...
阅读全文

浙公网安备 33010602011771号