分类: CS

计算机技术相关内容

18 篇文章

thumbnail
词法分析基础
术语 在编译器中,词法分析是将源代码转换成一系列单词或记号(token)的过程。以下是相关术语的解释和举例: 模式 (Pattern): 模式是用于识别单词的规则或模板。在词法分析器中,它通常是表示单词的正则表达式。模式定义了识别单词的规则,用于词法分析器生成器(如 Lex)生成种族器。 举例:考虑一个用于识别整数的模式: pattern = [0…
thumbnail
编译器编译过程核心步骤
核心步骤 编程语言的编译或解释过程通常包括以下几个核心步骤: 词法分析(Lexical Analysis):将源代码转换为一个一个词法单元的序列,如标识符、运算符和常量等。 语法分析(Parsing):根据语法规则将词法单元序列转化为抽象语法树,以表示源代码的语法结构。 语义分析(Semantic Analysis):检查抽象语法树是否满足语义规则…
thumbnail
编译器和解释器
编辑器和解释器是什么 编译器和解释器都是计算机程序的执行引擎,用于将高级语言(例如C、Java、Python等)转换为计算机能够理解和执行的机器语言。 编译器是将整个源代码文件一次性转换为目标机器语言的工具。编译器首先将源代码文件经过多个阶段(如词法分析、语法分析、语义分析和代码生成)的处理,生成目标代码文件,然后将目标代码文件与所需的库文件链接在…
thumbnail
文件系统的链接与备份
软链接与硬链接 软链接和硬链接是两种不同的链接方式,它们虽然都可以让多个文件名指向同一个文件内容,但是它们的实现机制和使用场景有所不同。 软链接是一种特殊的文件类型,它创建了一个指向另一个文件的符号链接。软链接类似于Windows系统中的快捷方式,它保存原始文件路径信息而不是实际的文件数据,因此软链接可以跨越不同的文件系统进行创建。另外,当源文件被…
散列表
散列思想 散列表用的是数组支持按照下标随机访问数据的特性,所以散列表其实就是数组的一种扩展,由数组演化而来。可以说,如果没有数组,就没有散列表。 散列函数 散列函数,顾名思义,它是一个函数。我们可以把它定义成 hash(key),其中 key 表示元素的键值,hash(key) 的值表示经过散列函数计算得到的散列值。 该如何构造散列函数呢?我总结了…
thumbnail
查找
二分查找 public int bsearch(int[] a, int n, int value) { int low = 0; int high = n - 1; while (low <= high) { int mid = (low + high) / 2; if (a[mid] == value) { return mid; } e…
thumbnail
非线性表(树,图)
递归 递归的三个关键: 1.定义需要递归的问题(重叠子问题)——数学归纳法思维 2.确定递归边界 3.保护与还原现场 递归形式 时间复杂度 常见问题 指数型 k^n 子集,大体积背包 排列型 n! 全排列,旅行商,N皇后 组合型 n!/m! * (n-m)! 组合选数 递归模板 void recursion(int level, int param…
thumbnail
线性表(链表,栈,队列)常见问题
数组 变长数组(resizable array) C++: vector Java: ArrayList. Python: list 如何实现一个变长数组? 支持索引与随机访问·分配多长的连续空间? 空间不够用了怎么办? 空间剩余很多如何回收? 一个简易的实现方法 初始:空数组,分配常数空间,记录实际长度(size)和容量(capacity) Pu…