笔记
文章平均质量分 55
我是我是是我是我
这个作者很懒,什么都没留下…
展开
-
FeelUOwn音乐播放器的一点点研究
软件作者说:FeelUOwn 使用 Python 3 进行开发,目前默认使用 mpv 作为其播放引擎, 基于 PyQt5 构建 GUI。原创 2022-06-09 23:28:31 · 680 阅读 · 0 评论 -
数据结构复习--查找表
静态/动态:静态查找表仅查找,动态可能会有插入元素等操作 平均查找长度(ASL):平均比较次数 静态查找表 1. 顺序表 逐个遍历 2. 有序表 二分查找 斐波那契查找 如果表长m=Fn+1−1m=F_{n+1}-1m=Fn+1−1 则可以把表分为两段加一点: 长为Fn−1F_n-1Fn−1的一段、arr[Fn]arr[F_n]arr[Fn]、长为Fn−1−1F_{n-1}-1Fn−1−1的一段 这样获得一个固定比例的索引来查找,索引只用加减法这方面比二分查找的乘除运算快 插..原创 2022-01-14 11:17:05 · 272 阅读 · 0 评论 -
二叉树遍历的非递归实现
复习数据结构的过程中,觉得二叉树前中后序遍历的非递归实现还是不太好想的,所以结合老师给出的思想,整理了一下自己的思路,记在这里,留日后翻看 分析 递归实际就是栈的先进后出的性质,所以用栈来实现非递归算法。 递归回溯的时候会重新获得当前状态的全部信息,但是非递归实现不会自然有这些,难点就是保存需要的信息。 先序遍历 对于任意节点,只要访问之后先后入栈其非空的右、左孩子即可 中序遍历 访问一个节点之前,其左子树的节点已经全部被访问过。 因此根据栈先进后出的特性,入栈一个节点之后,要入栈其左孩子.原创 2022-01-12 23:04:52 · 246 阅读 · 0 评论 -
uva 548 利用中序与后序遍历还原二叉树
uva 548 给出一棵树的中序与后序遍历结果,其中每个节点的值不重复,求根节点到叶子节点的最短权和(路径上所有节点的权相加)对应的叶子节点。如果存在多个,则输出叶子权值最小的那个。 后序遍历:左子树后序遍历-右子树后序遍历-树的根节点,直接得到根节点 中序遍历:左子树中序遍历-根节点-右子树中序遍历,在掌握根节点的位置和树的中序遍历结果时,可以求出左右子树的节点数 同时利用notleaf做标记:已经判断有子树的,标true。这个数组的首尾封住,可以避免单独判断出界问题 遍历一个树的步骤: 给出其后原创 2021-10-27 09:16:30 · 161 阅读 · 0 评论 -
uva122 二叉树层序遍历/bfs
uva 122 题目大意:给出一组孤立节点,输出层序遍历的结果,如果路径不完整,输出“not complete" 如果用顺序编号的方法,思路是利用编号的2倍关系跳转,不过数组很容易溢出,或者说根本开不了如此巨大的数组 所以利用二叉树模拟。主要需要实现: 树的建立:在读取输入时建立,对于跳跃的节点,就需要利用able为false的中间节点链接 遍历:层序遍历是广度优先,可以利用队列实现。最初push root进队列,此后每次取出一个节点,判断该节点的able,可以的话依次在队列尾插入该节点的左右孩子(原创 2021-10-25 22:47:22 · 145 阅读 · 0 评论 -
Box in line 链表不是直白的可变数组
uva 12657 最开始在rverse = !rverser这里出现了问题,写成了rverse = ~rverse,这样写rverse的值是不发生变化的 整体思路很清晰,自己做链表。一开始就知道不能反转,做了标记rverse,但是查找直接用O(N),必然超时。 最开始也试着想了下存储位置,但是没想透——以为每次变化都会波及前边的。实际上存储每一个的指针,是很方便的。所以有优化的思路还是要想清晰一些 做法太过麻烦耗资源,不断申请/销毁内存,函数调用等都会增加负担 书上的亮点需要学习 统原创 2021-09-13 20:55:58 · 108 阅读 · 0 评论 -
只需要链表的思想
uva 11988 [跳到行首输入,]跳到行尾输入,无非就是模拟链表插入。 但是不必使用或模拟链表数据结构,只应用思想,提高效率,认清本质 要做的其实只需改变读取源输入的顺序 s是源输入,下标从1开始,nxt是存储读取顺序的表,下标从0开始 读取顺序是,从nxt[0]获得第一个下标i, 而nxt[i]表示第i处的下一个索引,因此不断循环,直到nxt[i_last]是0 所以初始化nxt[0] = 0,表示还没有数据,curr = last = 0,curr表示最后一个维护好的节点,接下来在curr后原创 2021-09-11 11:45:51 · 73 阅读 · 0 评论 -
栈的应用..
uva 442 运算顺序不是很清晰,但是用栈来处理,就变得明了 核心步骤是,把矩阵按运算顺序压入栈中,如果遇到)就从栈中取出两个运算,将结果压回,这样就集成了括号带来的运算顺序。 #include <iostream> #include <map> #include <stack> #include <fstream> #include <string> #define TEST 0 using namespace std; typede原创 2021-09-11 10:01:19 · 75 阅读 · 0 评论 -
uva514 栈的应用
uva514 开始以为是旋转某一截,就用奇怪的方法,以致后边发现思路错了甚至改不会来 但是进车站的车厢正好满足后进先出,应该考虑栈 在B轨运行的车箱,无非就是从A轨按顺序取,或者在栈顶取, 而A轨的车厢,如果不能与B轨道匹配,就说明他进栈了 这样考虑就会清晰明了 #include <iostream> #include <fstream> #include <stack> using namespace std; #define TEST 1 int main(原创 2021-09-08 08:48:21 · 114 阅读 · 0 评论 -
uva210 循环链表+队列+索引=>模拟
uva210 程序循环进行 : 循环链表 Lock未遂的程序依次抓走 : 队列 数据结构刚好看到循环链表,感觉写好了插入删除很方便 #include <iostream> #include <fstream> #include <queue> #include <vector> #include <string> #include <cstring> using namespace std; struct Node; #defi原创 2021-09-07 22:45:33 · 151 阅读 · 0 评论 -
主要是索引
uva 230 #include <iostream> #include <fstream> #include <algorithm> #include <set> #include <string> #include <map> #include <cstring> #define TEST 1 #define maxn 100 using namespace std; struct Book { Book(原创 2021-09-03 18:18:43 · 70 阅读 · 0 评论 -
关注的数据作标记
uva 12100 #include <iostream> #include <fstream> #include <algorithm> #include <queue> #define TEST 0 using namespace std; int main() { ofstream ofs; if (TEST) { ofs.open("/home/lixiaoqi/Documents/Code/C++/1.原创 2021-09-03 16:46:53 · 68 阅读 · 0 评论 -
Class
零碎 类的关键字:class, struct 可以只是声明而不定义(不完全类型),只能用作指针或形参等(依旧不可使用)。这也是为什么可以在类中定义自己的指针。 const加在形参表之后,且必须同时出现在声明与定义中 Lixiaoqi::show() const {//do sth.}; 初始化 / 构造 构造函数直接初始化 Lixiaoqi::lixiaoqi() a(1),b(2.0)…{//do sth.}; 可以指定初始化 className varName = { ... } 要原创 2021-04-24 22:59:56 · 170 阅读 · 0 评论