摘要: 进程互斥的解决方案 硬件实现方法:中断屏蔽方法、TS/TSL指令、Swap/XCHG指令。 软件实现方法:单标志法、双标志先检查、双标志后检查、Peterson算法。 各种解决方案存在的问题: 例如:1.在双标志先检查方法中,进入区的“检查”、”上锁“ 操作无法一气呵成,从而导致俩个进程有可能同时进 阅读全文
posted @ 2020-05-23 21:26 每天都要吃早饭 阅读(3760) 评论(0) 推荐(0) 编辑
摘要: 【1】单标志法: 缺点: turn 表示当前允许进入临界区的进程号,而只有当前允许进入临界区的进程在访问了临界区之后,才会修改turn的值。也就是说,对于临界区的访问,一定是P0->P1->P0->P1......这样轮流访问。这种必须“轮流访问”带来的问题是,如果此时允许进入临界区的进程是P0,而 阅读全文
posted @ 2020-05-23 20:40 每天都要吃早饭 阅读(539) 评论(0) 推荐(0) 编辑
摘要: 使用该图例:并将以先序遍历的结果打印 原二叉树和拷贝后的二叉树 该图例先序遍历结果为:A B C D E F G H 直接上代码: 1 #include<iostream> 2 using namespace std; 3 4 //二叉树节点 5 struct BinaryNode 6 { 7 ch 阅读全文
posted @ 2020-05-23 16:49 每天都要吃早饭 阅读(1078) 评论(0) 推荐(0) 编辑
摘要: 1 #include<iostream> 2 using namespace std; 3 4 //二叉树节点 5 struct BinaryNode 6 { 7 char ch; 8 BinaryNode* lchild; 9 BinaryNode* rchild; 10 }; 11 int He 阅读全文
posted @ 2020-05-23 16:37 每天都要吃早饭 阅读(769) 评论(0) 推荐(0) 编辑
摘要: 叶子节点:指的是没有左右孩子节点的节点。 图(1)叶子节点数为3 1 #include<iostream> 2 using namespace std; 3 4 //二叉树节点 5 struct BinaryNode 6 { 7 char ch; 8 BinaryNode* lchild; 9 Bi 阅读全文
posted @ 2020-05-23 16:19 每天都要吃早饭 阅读(1712) 评论(0) 推荐(0) 编辑
摘要: 【先序遍历】DLR:先根再左再右:A->B->C-D->E->F->G->H [中序遍历] LDR:先左再根再右:B->D->C->E->A->F->H->G 【后序遍历】LRD:先左再右再中:D->E->C->B->H->G->F->A 图(1) 【先序遍历】DLR:先根再左再右:A->B->D- 阅读全文
posted @ 2020-05-23 15:59 每天都要吃早饭 阅读(7235) 评论(0) 推荐(0) 编辑
摘要: 【1】定义: n(n>=0)个节点的有限集合,由一个跟节点以及俩颗互不相交的、分别成为左子树和右子树的二叉树组成。 【2】逻辑结构 一对二 【3】基本特征 每个节点最多有俩颗子树(不存在度大于2的节点) 左子树和右子树的次序不能颠倒(有序树) 【4】二叉树的性质 1. 在二叉树的第i层上至多有2i- 阅读全文
posted @ 2020-05-23 10:55 每天都要吃早饭 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 【1】树的结构特点 非线性结构,有一个直接前驱,但可能有多个直接后继; 树的定义具有递归性,树中还有树; 树可以为空,即节点个数为0; 通过左孩子右兄弟表示法能够将一个非二叉树转化为二叉树。 【2】树的存储 顺序存储 链式存储 阅读全文
posted @ 2020-05-23 10:40 每天都要吃早饭 阅读(444) 评论(0) 推荐(0) 编辑