程序最美(寻路)

你还在坚持练习你的技术吗?运动员天天训练,音乐家也会演练更难的曲章。你呢?

2013年10月11日

再议并查集

摘要: 再议并查集 上文《并查集》中,我们讨论了并查集的数据结构和基本操作,以及给出了个基本实现。我们指出理解并运用好并查集重点在于理解元素的表示、类别的表示、元素的索引,以及三者之间的关系。 在实现中,我们指出Find的参数x是为data的索引(等价于father的索引),用索引表示实际的元素,并Find出其类别。这里我们补充一点:Find函数返回的是参数x对应的类别,这里的类别表示依然是用data的索引进行的表示,返回的索引(返回值)实质上是所述类别的祖先节点的索引。 同样Union函数的两个参数实质是data的索引(等价于father的索引),但表示的是其对应的元素所述的类别。在Union中,i 阅读全文

posted @ 2013-10-11 20:11 unixfy 阅读(242) 评论(0) 推荐(0)

并查集

摘要: 并查集 并查集是一种简单且强大的工具。本文我们就是学习并介绍一下并查集。并查集的资料网上有很多,也有很多代码实现。博主在学习的过程中也查阅了很多资料,有兴趣的话可以Google之。 并查集有三个数据结构: 集合:实际元素组成的集合 类信息:记录元素的类信息 秩信息:记录元素的高度 并查集包含三种基本操作: Init:初始化,将集合每个元素看做一个类别,元素的类信息即为自身,秩信息都为0 Find:查找,根据给定的元素,返回其类别信息。在执行查找的过程中进行路径压缩优化,以提高后续Find的效率。 Union:合并,将两个元素所在的集合进行合并(集合用其中的元素来表示),在合并的过程中同样进行优 阅读全文

posted @ 2013-10-11 16:40 unixfy 阅读(365) 评论(0) 推荐(0)

另一版本的基于堆栈的虚拟机实现

摘要: 另一版本的基于堆栈的虚拟机实现 前面我们对一基于堆栈虚拟机进行了源码剖析《基于栈的虚拟机源码剖析》。之前我们也实现了一个简单的基于堆栈的虚拟机《实现一个堆栈虚拟机》。在《实现一个堆栈虚拟机》中,我们将虚拟机定义为一个VirtualBox类,VirtualBox类中有成员变量:堆栈、指令内存、数据内存,另外还有成员函数:读取指令、执行指令。《基于栈的虚拟机源码剖析》中,是C语言实现的,没有设计成类的形式,但依然有堆栈、指令、数据、读取指令、执行指令等模块。 这里,我们再次实现一个基于堆栈的虚拟机。先给出实现代码,然后再对代码进行解释。// 基于堆栈的虚拟机实现#include #include 阅读全文

posted @ 2013-10-11 00:32 unixfy 阅读(1212) 评论(0) 推荐(0)

导航