介绍:二叉排序树是以一定的规则排列树中元素,因而可以进行快速的排序和查询的树状数据结构,一般规则是:对于树中任意一个节点,左孩子严格小于根,根严格小于右孩子,有点像大根堆。(只是大根堆中左右孩子关系并不确定,且和根的关系是统一的,而且有上浮和下沉操作使得大根堆总是一棵完全二叉树,其不断弹出堆顶形成有序列的过程叫做堆排序。虽然二叉排序树中也有旋转操作使得树尽量平衡,但是由于数值大小分明的左右孩子,在...
分类:
其他好文 时间:
2014-06-03 01:01:17
阅读次数:
313
typedef char status;
typedef char Telemtype;
#define NULL 0
#define OK 1
typedef struct bitnode{
Telemtype data;
struct bitnode *lchild,*rchild;
}bitnode,*bitree;
Creatbitree(bitree &t)
{
//先序创建二叉...
分类:
其他好文 时间:
2014-06-03 00:47:39
阅读次数:
195
实现基于数据结构的语言
创建任何 DSL 都应该从定义需要解决的问题开始。这里,我们需要定义一个 DSL 库(有时也称为组合库,combinators library),用于二维图形,这是一个很明显的选择。这个示例演示如何用大量简单的基本图形构建出复杂的结构。在计算机屏幕上的图像本质上就是线条和多边形的集合,尽管显示出来的图形可能极其复杂。这个示例用四个模块表现:第一,清单 12-1,提供...
分类:
其他好文 时间:
2014-06-03 00:38:21
阅读次数:
420
?基本概念
栈的定义
限定仅在表尾进行插入或删除的线性表
组成
栈顶
栈底
基本操作
入栈(PUSH)
往栈中插入一个元素
弹栈(POP)
从栈顶删除一个元素
栈的表示
顺序栈
链栈
对于顺序栈,有两...
分类:
其他好文 时间:
2014-06-02 22:28:26
阅读次数:
337
基本概念
队列的定义
队列是一种只能在表的一头插入,另一头删除的线性表,简而言之具有FIFO的特性
组成
队头
队尾
扩展
双端队列
只能在两端进行删除插入操作的线性表
实现
链队列
顺序队列
循环队列
循环队列
循...
分类:
其他好文 时间:
2014-06-01 10:57:30
阅读次数:
380
课程介绍
这门课程核心内容是算法和数据结构。
具体的算法和数据结构如下:
数据类型:堆栈、队列、背包、并查集、优先队列。
排序:快排、并排、堆排、基数排序
查找:BST、红黑BST、哈希表
图:BFS、DFS、Prim、Kruskai、Dijkstra
字符串:KMP、正则、TST、哈夫曼、LZW
高级:B树、后缀数组、最...
分类:
其他好文 时间:
2014-06-01 10:52:26
阅读次数:
285
Splay Tree的插入操作,搜索操作,和删除操作都实现了,那么就可以使用来解题了。
指针的删除操作的处理还是那么难的,很多坎需要避开.
同一个坎还是坑了我好多次,就是指针传递的问题,什么时候需要修改指针本身的值,就必须返回指针或者传递指针的指针,或者传递指针的的实参。
这里的删除操作就是需要改变传递到函数的指针本身的,所以我这里使用了返回指针操作。
还有删除树的问题,之前的代码没做删除...
分类:
其他好文 时间:
2014-06-01 10:30:52
阅读次数:
339
1.栈和队列是两种特殊的线性表
运算操作被限定只能在表的一端或两端插入,删除元素,故也称它们为限定的线性表结构
2.栈的基本运算
1).Stackinit(&s) 构造一个空栈
2).Stackempty(s) 判断s是否为空栈,当s为空栈时,函数返回值1 否则 0
3).Push(&s,x) 在栈s 的顶部插入元素x,简称将x入 栈
4).Pop(&...
分类:
其他好文 时间:
2014-06-01 09:08:36
阅读次数:
278
来自维基百科
堆
堆(英语:heap) 亦被称为:优先队列(英语:priority queue),是计算机科学中一类特殊的数据结构的统称。
堆通常是一个可以被看做一棵树的数组对象。在队列中,调度程序反复提取队列中第一个作业并运行,因而实际情况中某些时间较短的任务将等待很长时间才能结束,或者某些不短小,但具有重要性的作业,同样应当具有优先权。堆即为解决此类问题设计的一种数据结构。
逻辑定...
分类:
其他好文 时间:
2014-06-01 05:01:13
阅读次数:
279