测试
测试默认 提示块标签 default 提示块标签 primary 提示块标签 success 提示块标签 info 提示块标签 warning 提示块标签 danger 提示块标签 classDiagram direction BT class ASTNode { - List~ASTNode~ children - String value - TokenType type + addChild(ASTNode) void + evaluate() int + visit() void + toString() String + ASTNode(TokenType, String) } class Lexer { - int pos - char currentChar - String input + tokenize() List~Token~ - skipWhitespace() void - advance() void - number() String +...
数据结构(1) DS & ADT
数据结构(DS)什么是数据结构数据结构指的是数据在计算机中的组织与存储形式是表示数据组织, 管理, 储存的形式可分为两部分: 逻辑形式(ADT) 具体实现 为什么需要数据结构? 特殊的问题需要特殊的数据结构 方便对数据进行修改和查找 在数据量很大时支持快速的访问 执行特殊的方法 常见的数据结构 数组(Array) 链表(LinkList) 栈(Stack) 队列(Quene) 树(Tree) 图(Graphics) 等等…… 抽象数据类型(ADT)什么是数据抽象数据类型简单的说就是数据结构的逻辑形式, 不管它的实现比如数组在Python中长这样:1a = [1, 2, 4]C/C++长这样:1int a[3] = {1, 2, 4};而ADT, 只需要说明a是个数组就可以了, 不需要在乎它是怎么做出来的 为什么需要ADT-每种程序设计语言都有不同的数据结构实现方法,...
关于位运算的诡异操作(奇技淫巧)
众所周知, 位运算是一个平常写程序根本不会去用但ACMer十分喜欢的东西C/C++ 虽然不能直接操纵比特位(那太可怕了, 比指针还离谱), 但做点运算还是可以的常用的位运算有: 按位与: & 按位或: | 按为取反: ~ 按位异或: ^ 左移: << 右移: >> 常见的技巧判断奇偶众所周知, 整数是以二进制的形式储存在内存中的, 而奇数的最后一位为1, 偶数的最后一位为0所有只需看最后一位是1还是0就好了怎么看? 当然是用掩码啦1234567891011121314151617181920// cppint a = 9/* 00000000000000000000000000001001 = 9 00000000000000000000000000000001 = 1& -------------------------------- 00000000000000000000000000000001 = 1 //odd*/ int isOdd = a & 1;int b = 4/* ...
C 语言学习记录第一弹
我在翻阅 C Refernce 的”翻译阶段3”时,注意到”++最大吞噬++”原则: 若已经分析输入为到给定字符为止的预处理记号,则通常将能构成一个预处理记号的最长字符序列处理成下个预处理记号,即这会导致后继分析失败。这常被称为最大吞噬 (maximal munch) 。 “++最大吞噬++”原则指出: 编译器会尽可能把能识别成一个预处理记号的多义记号处理成一个记号类似正则表达式中的”贪婪匹配”例: a+++++b 译为 a++ ++ +b 而不是 a++ + ++b 根据定义与官方示例, 做以下实验: 12345678// main.cint main(void) { int a = 0xE+b; //! 错误:整数常量的“+b”后缀无效, 编译无法通过 int b = 0xE + b; // 正常: 编译通过 int c = 0xF+b; // 正常: 编译通过 return 0;} 第一行: 因为E在数字中可以表示科学计数法(如1E10, 2E+2, 1.5E-3),...
Fedora38 KDE Plasma安装记录
前言我一直都想使用Linux系统,从Android的Termux到微软的WSL,一开始用Termux,但不能好好敲代码(手机那个键盘你敲一个试试?)。 后来用WSL, 但我笔记本带不动WSl+Vscode, 就彻底放弃了……后来一直是Windows+Msys2+Vscode(安装c库方便),但后来使用xmake构建工程时发现vscode的xmake插件识别不到Msys2的xmake,碰巧寝室里有人玩双系统,就搞了。 为什么是Fedora?我本就是想要一个统一的开发环境而已,显然任何Linux都可以达到我的需求,那为什么选Fedora(我室友在我耳边叨叨了Ubuntu好久)?原因是:我当天刚好看到了它,就这么简单。而且我没有用过Fedora,其他还算用过(Ubuntu WSL,Arch WSL),Fedora是彻底没见过。而且Fedora有KDE定制版(KUbuntu:???)BTW, Fuck you, Windows! 开始安装准备安装找一个不用的U盘,作为安装介质然后去官网下载安装 Fedora Media Writer, 双击打开 ...