![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
笔记
文章平均质量分 55
我是我是是我是我
这个作者很懒,什么都没留下…
展开
-
FeelUOwn音乐播放器的一点点研究
软件作者说:FeelUOwn 使用 Python 3 进行开发,目前默认使用 mpv 作为其播放引擎, 基于 PyQt5 构建 GUI。原创 2022-06-09 23:28:31 · 653 阅读 · 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 · 258 阅读 · 0 评论 -
二叉树遍历的非递归实现
复习数据结构的过程中,觉得二叉树前中后序遍历的非递归实现还是不太好想的,所以结合老师给出的思想,整理了一下自己的思路,记在这里,留日后翻看分析递归实际就是栈的先进后出的性质,所以用栈来实现非递归算法。递归回溯的时候会重新获得当前状态的全部信息,但是非递归实现不会自然有这些,难点就是保存需要的信息。先序遍历对于任意节点,只要访问之后先后入栈其非空的右、左孩子即可中序遍历访问一个节点之前,其左子树的节点已经全部被访问过。因此根据栈先进后出的特性,入栈一个节点之后,要入栈其左孩子.原创 2022-01-12 23:04:52 · 237 阅读 · 0 评论 -
uva 548 利用中序与后序遍历还原二叉树
uva 548给出一棵树的中序与后序遍历结果,其中每个节点的值不重复,求根节点到叶子节点的最短权和(路径上所有节点的权相加)对应的叶子节点。如果存在多个,则输出叶子权值最小的那个。后序遍历:左子树后序遍历-右子树后序遍历-树的根节点,直接得到根节点中序遍历:左子树中序遍历-根节点-右子树中序遍历,在掌握根节点的位置和树的中序遍历结果时,可以求出左右子树的节点数同时利用notleaf做标记:已经判断有子树的,标true。这个数组的首尾封住,可以避免单独判断出界问题遍历一个树的步骤:给出其后原创 2021-10-27 09:16:30 · 131 阅读 · 0 评论 -
uva122 二叉树层序遍历/bfs
uva 122题目大意:给出一组孤立节点,输出层序遍历的结果,如果路径不完整,输出“not complete"如果用顺序编号的方法,思路是利用编号的2倍关系跳转,不过数组很容易溢出,或者说根本开不了如此巨大的数组所以利用二叉树模拟。主要需要实现:树的建立:在读取输入时建立,对于跳跃的节点,就需要利用able为false的中间节点链接遍历:层序遍历是广度优先,可以利用队列实现。最初push root进队列,此后每次取出一个节点,判断该节点的able,可以的话依次在队列尾插入该节点的左右孩子(原创 2021-10-25 22:47:22 · 114 阅读 · 0 评论 -
Box in line 链表不是直白的可变数组
uva 12657最开始在rverse = !rverser这里出现了问题,写成了rverse = ~rverse,这样写rverse的值是不发生变化的整体思路很清晰,自己做链表。一开始就知道不能反转,做了标记rverse,但是查找直接用O(N),必然超时。最开始也试着想了下存储位置,但是没想透——以为每次变化都会波及前边的。实际上存储每一个的指针,是很方便的。所以有优化的思路还是要想清晰一些做法太过麻烦耗资源,不断申请/销毁内存,函数调用等都会增加负担书上的亮点需要学习统原创 2021-09-13 20:55:58 · 96 阅读 · 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 · 66 阅读 · 0 评论 -
栈的应用..
uva 442运算顺序不是很清晰,但是用栈来处理,就变得明了核心步骤是,把矩阵按运算顺序压入栈中,如果遇到)就从栈中取出两个运算,将结果压回,这样就集成了括号带来的运算顺序。#include <iostream>#include <map>#include <stack>#include <fstream>#include <string>#define TEST 0using namespace std;typede原创 2021-09-11 10:01:19 · 64 阅读 · 0 评论 -
uva514 栈的应用
uva514开始以为是旋转某一截,就用奇怪的方法,以致后边发现思路错了甚至改不会来但是进车站的车厢正好满足后进先出,应该考虑栈在B轨运行的车箱,无非就是从A轨按顺序取,或者在栈顶取,而A轨的车厢,如果不能与B轨道匹配,就说明他进栈了这样考虑就会清晰明了#include <iostream>#include <fstream>#include <stack>using namespace std;#define TEST 1int main(原创 2021-09-08 08:48:21 · 99 阅读 · 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 · 124 阅读 · 0 评论 -
主要是索引
uva 230#include <iostream>#include <fstream>#include <algorithm>#include <set>#include <string>#include <map>#include <cstring>#define TEST 1#define maxn 100using namespace std;struct Book{ Book(原创 2021-09-03 18:18:43 · 60 阅读 · 0 评论 -
关注的数据作标记
uva 12100#include <iostream>#include <fstream>#include <algorithm>#include <queue>#define TEST 0using namespace std;int main(){ ofstream ofs; if (TEST) { ofs.open("/home/lixiaoqi/Documents/Code/C++/1.原创 2021-09-03 16:46:53 · 59 阅读 · 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 · 163 阅读 · 0 评论