摘要:
今天从下载了一个查找树库的源代码,奇怪的是这个库里声明的树节点没有数据域。于是很奇怪,没有数据域怎么用呢,难道这个库不能用?然后看了库的readme文档,找到了原因。原来为了应用的广泛性,这个库被故意设计成与数据域无关,用户在使用该库的时候,应当把数据域和库中的树节点封装成自己的数据结构,库中的函数操作事与用户数据类型无关的,仅仅需要用户提供一个比较函数而已。那么问题出来了,既然提供的比较函数参数中不能出现用户类型,因为库中的操作时与用户类型无关的;那么怎么才能让比较函数取到用户数据进行操作呢?没看库的代码时,对这个问题想了很久,始终不得其解,最终看了源代码,发现了该库的作者的做法。巧妙处正是 阅读全文
posted @ 2011-08-22 23:20
jialejiahi
阅读(220)
评论(0)
推荐(0)
摘要:
二叉树的递归遍历方法形式很统一:void Traverse(BiTree T){ if(T){ //visit,先序遍历 Traverse(T->lchild); //visit,中序遍历 Traverse(T->rchild); //visit,后序遍历 }}可是非递归遍历呢?前序和中序还好,跟递归的形式差不多:void InOrderTraverse(BiTree T, status(* visit)(TElemType e)){ InitStack(s); p=T; while(p || !StackEmpty(s)){ if(p){ //visit,先序遍历 Push(s, 阅读全文
posted @ 2011-08-22 01:07
jialejiahi
阅读(213)
评论(0)
推荐(0)

浙公网安备 33010602011771号