摘要:
打印字符串的全排列算法的思路:把一个字符串分成两部分,第一个字符+后面部分所有的字符。这样就能够递归的求解整个过程了:1.每个字符都做一次首字符2.当某个字符作为首字符的时候,求后面所有字符的全排列而这里的求后面所有字符的全排列可以看成递归的子问题全排列的递归树:但是这里还有一个问题,那就是字符串中... 阅读全文
摘要:
首先我们要更正一个很熟悉的概念,那就是指针不仅仅是“地址”,指针还有一个很重要的特性,那就是“类型”。指针初始化时,“=”的右操作数必须为内存中数据的地址,不可以是变量,也不可以直接用整型地址值(但是int *p =0;除外,该语句表示指针为空);所以int *p = 10;这样的代码是不允许的。在... 阅读全文
摘要:
对于数组,{5,7,6,9,11,10,8}它是某一个二查搜索树的后序遍历序列,这棵树的样子:通过上面的例子可以看出二查搜索树的后序遍历序列的特征是:1.序列的最后一个节点是二查搜索树的根节点2.序列的前半部分是二查搜索树的左子树,并且都比根节点要小3.序列的后半部分是二查搜索树的右子树,并且都比根... 阅读全文
摘要:
http://www.cnblogs.com/grandyang/p/4606334.html 阅读全文
摘要:
二叉树的深度对于二叉树的深度的求解,利用递归的方式求解很简单:下面就来设计这个递归算法:要求一个节点的高度,先求左子树的高度,然后再求解右子树的高度。最后树的高度就是1+max(left_depth, right_depth)。int leftLen = depth_tree(root->left)... 阅读全文
摘要:
RB-tree的性质对于RB-tree,首先做一个了解,先看一张维基百科的RB-tree:再看RB-tree的性质:性质1. 节点是红色或黑色。性质2. 根是黑色,所有叶子都是黑色(叶子节点指的是NIL节点)。。性质3. 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的... 阅读全文
摘要:
向题描述假设一个系统有三个抽烟者进程和一个供应者进程。每个抽烟者不停地卷烟 并抽掉它,但是要卷起并抽掉一支烟,抽烟者需要有三种材料:烟草、纸和胶水。三个抽烟 者中,第一个拥有烟草、第二个拥有纸,第三个拥有胶水。供应者进程无限地提供三种材料, 供应者每次将两种材料放到桌子上,拥有剩下那种材料的抽烟者卷... 阅读全文
摘要:
问题描述一张圆桌上坐着5名哲学家,每两个哲学家之间的桌上摆一根筷子,桌子的中间是一碗米饭,如图2-10所示。哲学家们倾注毕生精力用于思考和进餐,哲学家在思考时,并不影响他人。只有当哲学家饥饿的时候,才试图拿起左、 右两根筷子(一根一根地拿起)。如果筷子已在他人手上,则需等待。饥饿的哲学家只有同时拿到... 阅读全文
摘要:
进程通信是指进程之间的信息交换。PV操作是低级通信方式,例如信号量,主要是进程间以及同一进程内不同线程之间的同步手段。髙级通信方式是指以较高的效率传输大量数据的通信方式。高级通信方法主要有以下三个类。共享存储在通信的进程之间存在一块可直接访问的共享空间,通过对这片共享空间进行写/读操作实现进程之间的... 阅读全文
摘要:
看一个较为复杂的生产者-消费者问题:问题描述桌子上有一只盘子,每次只能向其中放入一个水果。爸爸专向盘子中放苹果,妈妈专向盘子中放橘子,儿子专等吃盘子中的橘子,女儿专等吃盘子中的苹果。只有盘子为空时,爸爸或妈妈就可向盘子中放一个水果;仅当盘子中有自己需要的水果时,儿子或女儿可以从盘子中取出。问题分析1... 阅读全文