常见的操作系统 只使用了 0 和3 段选择子 DPL 是段描述符的内容 段的信息 中断和陷入的 大致特权级的展现 RPL 当前要访问数据段对饮给的特权级 CPL 当前代码段的特权级 DPL 全局的 通过门区访问特权级更高的段 特权级的切换 通过中断切换特权级 基于中断的特权级的转换 中断门 压栈信息 ...
分类:
其他好文 时间:
2018-10-12 14:57:30
阅读次数:
213
启动工作原理 刚接触操作系统的时候觉得这个最神秘,到底里面做了什么,怎么就成了个操作系统,它到底有什么用,为什么要引进来着个东东。学了之后才知道,原来最根本的思想还是源于汇编里面的跳转和压栈,以调用一个函数为例,编译后的汇编肯定是先通过SP压入当前代码段地址然后就是保存一些寄存器的值放栈里面(51单 ...
分类:
其他好文 时间:
2018-10-12 13:43:04
阅读次数:
148
栈是一种后进先出的线性表,是最基本的一种数据结构,在许多地方都有应用。 一、什么是栈 栈是限制插入和删除只能在一个位置上进行的线性表。其中,允许插入和删除的一端位于表的末端,叫做栈顶(top),不允许插入和删除的另一端叫做栈底(bottom)。对栈的基本操作有 PUSH(压栈)和 POP (出栈), ...
分类:
其他好文 时间:
2018-10-11 01:39:25
阅读次数:
290
1、 采用传统的递归 (O(n)的空间复杂度) 2、采用 Stack + 迭代的方式 (O(n)的空间复杂度) ①、先序遍历 ②、中序遍历 优化 ③、后续遍历 a、采用 Stack 进行压栈操作,同时采用一个 Map 记录该节点的右孩子是否被访问过 b、采用一个指针记录当前右孩子是否访问过 c、前序 ...
分类:
其他好文 时间:
2018-10-05 14:02:10
阅读次数:
139
内联函数: 所谓内联函数就是指函数在被调用的地方直接展开,编译器在调用时不用像一般函数那样,参数压栈,返回时参数出栈以及资源释放等,这样提高了程序执行速度。 对应Java语言中也有一个关键字final来指明那个函数是内联的。 内联不一定好,当被指定为内联的方法体很大时,展开的开销可能就已经超过了普通 ...
分类:
编程语言 时间:
2018-10-01 12:55:34
阅读次数:
170
二叉树如上图所示。 一、递归遍历 二、非递归遍历 要借助栈或队列 初始化把根节点压栈,访问根节点并弹出,然后依次将右节点、左节点入栈,直到栈为空。 思路:回溯。访问根节点的左孩子,访问左孩子的左孩子,直到左孩子为空,这个过程中把所有访问过的节点压栈,当左孩子为空,pop该节点,访问该节点的右孩子。空 ...
分类:
其他好文 时间:
2018-09-29 14:40:15
阅读次数:
162
借用一个辅助的栈,遍历压栈顺序,先讲第一个放入栈中,这里是1,然后判断栈顶元素是不是出栈顺序的第一个元素,这里是4,很显然1≠4,所以我们继续压栈, * 直到相等以后开始出栈,出栈一个元素,则将出栈顺序向后移动一位,直到不相等,这样循环等压栈顺序遍历完成,如果辅助栈还不为空,说明弹出序列不是该栈的... ...
分类:
编程语言 时间:
2018-09-24 00:36:54
阅读次数:
132
(1)掌握栈的相关概念、特点和基本操作(入栈、出栈、判栈空、获取栈元素等)。 栈:限制只能在表的一端进行插入和删除的线性表。 允许插入和删除的一端,称为栈顶(top)。 不允许插入和删除的另一端,称为栈底(bottom)。 把一个元素从栈顶放入栈中的操作,称为进栈、入栈或压栈 (push) 从栈顶取 ...
分类:
其他好文 时间:
2018-09-22 16:58:04
阅读次数:
139
有向图强连通分量算法,包括Kosaraju算法,Tarjin算法,Gabow算法,本文介绍Kosaraju算法。 Kosaraju算法需要对图进行两遍dfs。 step1:对原图G进行深度优先遍历,记录每个节点的离开时间(后序遍历,将点压栈)。 step2:选择具有最晚离开时间的顶点(出栈),对逆图 ...
分类:
其他好文 时间:
2018-09-15 22:00:22
阅读次数:
163
栈是限定仅在表尾进行插入和删除操作的线性表。 我们把允许插入和删除的一端称为栈顶,另一端称为栈底,不含任何数据元素的栈称为空栈。栈又称为后进先出的线性表,简称LIFO结构。 栈的插入操作,叫作进栈,也称压栈、入栈。 栈的删除操作,叫作出栈,也有的叫作弹栈。 栈的抽象数据类型 栈的顺序存储结构:以首元 ...
分类:
其他好文 时间:
2018-09-12 15:11:42
阅读次数:
157