- 博客(25)
- 收藏
- 关注
原创 【linux】Linux第一个小程序-进度条
在Windows系统中,文本文件的换行符通常是回车加换行(CR+LF,即)。而在Unix/Linux系统中,换行符仅仅是LF()(Unix/Linux下这个就就包括了回车和换行)。在linux下编译运行以上代码,发现在前三秒"hello world!"并未被打印到屏幕上,三秒之后被打印到屏幕上。那么此前三秒,它被储存到了那里呢?答案是缓冲区,缓冲区(Buffer)主要应用于提高系统性能和效率。缓冲区通常指的是内存中的一段连续区域,用于临时存储数据,减少CPU、内存和外部设备(如硬盘、网络等)之间的交互次
2024-04-24 19:49:40
1052
原创 【Linux】 Linux编译器-gcc/g++使用
gcc 和 g++ 是在 Linux(以及其他类 Unix 系统)环境中广泛使用的编译器,它们都是 GNU Compiler Collection(GCC)的一部分。注:ldd(简称“Library Dependency Viewer”)是一个命令行工具,用于显示程序依赖的共享库(也称为 DLL - 动态链接库)。
2024-04-20 11:11:21
1136
原创 【linux】yum 和 vim
在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序。但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在一个服务器上,通过包管理器可以很方便的获取到这个编译好的软件包, 直接进行安装。软件包和软件包管理器, 就好比 “App” 和 “应用商店” 这样的关系.
2024-04-10 20:32:01
1322
原创 【Linux】权限理解
目录的可执行权限是表示你可否在目录下执行命令。如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd进入目, 即使目录仍然有-r读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。
2024-03-31 12:22:39
898
原创 【C++】类和对象(上)
/ 类体:由成员函数和成员变量组成// 注意后面的分号类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。声明和定义全部放在类体中成员函数如果在类中定义,编译器可能会将其当成内联函数处理。类声明放在.h文件中成员函数名前需要加类名补充class Datepublic:private:int _year;//我们一般习惯在成员变量前加一个"_"方便区分形参。
2024-03-24 17:08:06
1011
原创 【Linux】基本指令
语法ls[选项][目录或文件]功能ls罗列出当前路径下文件命常用选项-a 列出目录下的所有文件,包括以开头的隐含文件。-l 列出文件的详细信息。-d 将目录象文件一样显示,而不是显示其下的文件。如:ls –d 指定目录-i 输出文件的 i 节点的索引信息。如 ls –ai 指定文件-k 以 k 字节的形式表示文件的大小。ls –alk 指定文件-n 用数字的 UID,GID 代替名称。(介绍 UID, GID)-F 在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通文件;
2024-03-16 15:19:46
993
3
原创 【C++】C++入门
定义命名空间,用到namespace关键字,后跟命名空间的名字,接一对{}{}中为命名空间的成员。命名空间中可以定义变量/函数/类型命名空间可以嵌套同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。//1. 命名空间中可以定义变量/函数/类型int val;//2. 命名空间可以嵌套int a;int b;int c;int d;//3. 同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。
2024-03-12 22:59:15
1338
2
原创 【数据结构】栈和队列
FIFO(First In First Out) 入队列:进行插入操作的一端称为队尾 出队列:进行删除操作的一端称为队头.,因为如果使用数组的结构,出队列在数组头上出数据,效率会比较低。LIFO(Last In First Out)的原则。因为数组在尾上插入数据的代价比较小。允许在固定的一端进行插入和删除元素操作。队列也可以数组和链表的结构实现,栈的实现一般可以使用。
2024-03-08 20:00:25
397
原创 【数据结构】排序
快速排序整体的综合性能和使用场景都是比较好的,所以才敢叫快速排序时间复杂度:O(N*logN)空间复杂度:O(logN)稳定性:不稳定。
2024-03-05 23:06:45
734
原创 【数据结构】二叉数
设二叉树的根节点所在层数为1,层序遍历就是从所在二叉树的根节点出发,首先访问第一层的树根节点,然后从左到右访问第2层上的节点,接着是第三层的节点,以此类推,自上而下,自左至右逐层访问树的结点的过程就是层序遍历。,即用链来指示元素的逻辑关系。二叉树创建成功后,用递归进行前序遍历,前序遍历可被拆解为:先访问根,再访问左子树,再访问右子树,左子树又可以分为根和左子树和右子树,再来访问根,再访问左子树,再访问右子树······当遇到根节点为空时结束。上面相关概念中常见一点的是2,4,5,8,9,11小点。
2024-02-18 20:35:50
967
原创 环形链表 II
这道题是前面环形链表那道题的一个拓展,如果朋友们感兴趣的话可以去看一下:https://blog.csdn.net/2302_76561054/article/details/135179129给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该
2023-12-27 15:03:18
369
1
原创 环形链表
如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数 pos来表示链表尾连接到链表中的位置(索引从 0 开始)。:这个题我们想到的一个思路就是快慢指针,让快指针一次走两步,慢指针一次走一步,如果快慢指针能够相遇说明链表中有环,反之,如果快指针先走到空则链表中无环。在上面的思路中,我们是让快指针一次走两步,这样一定能追上,但我们再想一下让快指针一次走三步,走四步,…给你一个链表的头节点 head ,判断链表中是否有环。
2023-12-27 13:31:31
471
1
原创 随机链表的复制
这道题比较关键的一点就是随机指针random的复制,我们能够想到的一种思路就是,先创建一个新的链表,将原链表所有节点拷贝到新链表中,然后再用一个cur指针遍历原链表节点,找每个节点对应的random,但在找每个节点的random时又需要再查找一边链表,这样比较麻烦,而且时间复杂度也来到了。:先依次遍历原链表节点,在原链表每个节点后拷贝一个当前节点,再通过原链表的random去寻找拷贝节点的random,赋值好拷贝节点的random,再将每个拷贝节点拿下来尾插到新链表中即可。返回复制链表的头节点。
2023-12-23 22:25:27
861
1
原创 C语言实现贪吃蛇(详解)
Windows这个多作业系统除了协调应用程序的执行、分配内存、管理资源之外,它同时也是⼀个很大的服务中心,调用这个服务中心的各种服务(每⼀种服务就是⼀个函数),可以帮应用程序达到开启视窗、描绘图形、使用周边设备等目的,由于这些函数服务的对象是应用程序(Application),所以称为ApplicationProgrammingInterface,简称API函数。WIN32API也就是MicrosoftWindows32位平台的应用程序编程接口。
2023-12-22 22:36:26
2711
5
原创 轮转数组
因为我们要轮转原数组的后k个元素,所以轮转后的数组中的前k个元素就是轮转前数组中的后k个元素。所以我们就可以先将原数组中的后k个元素拷贝到新创建数组中的前k个位置处,然后再将原数组中剩余元素拷贝到新创建数组中的剩余位置,再将新创建数组中元素依次拷贝回原数组中即可。在上述代码中当k>numsSize时,其实就不用轮转k次了,只需要轮转k%numsSize就可以了,多余的都是重复轮转。每次记录下数组最后一个值,再将数组中元素从后往前向依次后移一位,再将记录下来的值放到数组的首元素位置,执行k次。
2023-12-13 17:28:47
359
1
原创 【数据结构】算法的时间复杂度空间复杂度
实例4基本操作执行最好1次,最坏O(logN)次,时间复杂度为 O(logN) ps:logN在算法分析中表示是底。实例3基本操作执行最好1次,最坏N次,时间复杂度一般看最坏,时间复杂度为 O(N)。实例3递归调用了N次,开辟了N个栈帧,每个栈帧使用了常数个空间。实例1基本操作执行了2N+10次,通过推导大O阶方法知道,时间复杂度为 O(N)。实例5通过计算分析发现基本操作递归了2^N 次,时间复杂度为O(2^N)。实例2基本操作执行了10次,通过推导大O阶方法,时间复杂度为 O(1)。
2023-12-11 12:24:01
1022
1
原创 链表的中间结点
定义一个块指针和慢指针先指向头节点,让快指针每次走两步,慢指针每次走一步,当快指针走到最后一个节点(节点总数为偶数个)或者快指针走完所有节点(节点总数为奇数个)时,慢指针的位置刚好就是中间节点的位置。要找中间节点我们可以先把链表所有节点数出来后再找中间节点,这也是常规思路。给你单链表的头结点 head ,请你找出并返回链表的中间结点。快慢指针法——这个才是我最推荐的(推荐推荐再推荐!如果有两个中间结点,则返回第二个中间结点。
2023-12-05 22:42:03
352
原创 C语言合并两个有序链表
第一种是:直接在原链表上操作,题目已经告诉我们两链表是升序链表,所以我们就可以比较方便对链表中的所有数据进行有序的遍历比较,比较以后我们可以直接对原链表进行操作,根据比较结果,将数值小一点的节点在链表的指定位置插入,将所有链表按顺序连接起来;为解决这点我们可以对思路二做些改进,可以定义一个带头的链表,哨兵位,不存储任何有效的数据。第二种是:创建一个新的链表,对原来两升序链表中的所有数据进行遍历,将小一点的那个数据节点尾插到新链表中,继续向后遍历。新链表是通过拼接给定的两个链表的所有节点组成的。
2023-12-04 23:22:48
599
原创 C语言合并两个有序数组
因为所所涉及的数组均为递增排列,所以我们可以创建三个指针i,j,k,一个k指向nums1中的的第m+n个元素,一个i指向nums1中的第m个元素,另一个j指向nums2中的第n个元素,然后对nums1和nums2中元素遍历比较,大的就放在nums1中k处,然后k向前移一位,直至遍历所有元素。输入:nums1 = [0], m = 0, nums2 = [1], n = 1 输出:[1] 解释:需要合并的数组是 [] 和 [1]。合并结果是 [1]。合并结果是 [1,2,2,3,5,6]
2023-11-15 22:17:36
154
原创 函数 五
ret_type fun_name(形式参数)• ret_type 是函数返回类型• fun_name 是函数名• 括号中放的是形式参数• {}括起来的是函数体• ret_type 是用来表示函数计算结果的类型,有时候返回类型可以是 void ,表⽰什么都不返回。• fun_name 是为了方便使⽤函数。•函数的参数也可以是 void ,明确表示函数没有参数。如果有参数,要交代清楚参数的类型和名字,以及参数个数。• {}括起来的部分被称为函数体,函数体就是完成计算的过程。
2023-09-17 10:40:27
98
1
原创 数组 四
从结果可见每⼀行内部的每个元素都是相邻的,地址之间相差4个字节,跨⾏位置处的两个元素(如:arr[0][4]和arr[1][0])之间也是差4个字节,所以⼆维数组中的每个元素都是连续存放的。在⼀个升序的数组中查找制定的数字n,很容易想到的方法就是遍历数组,但是这种方法效率⽐较低,所以我们⼀般都会猜中间数字,然后看⼤了还是⼩了,这就是⼆分查找,也叫折半查找。C语⾔规定数组是有下标的,下标是从0开始的,假设数组有n个元素,最后⼀个元素的下标是n-1,下标就相当于数组元素的编号。
2023-09-16 15:52:50
108
1
原创 猜数字小游戏(C语言小游戏1)
time 函数会返回当前的⽇历时间,其实返回的是1970年1⽉1⽇0时0分0秒到现在程序运⾏时间之间的差值,单位是秒。产生上面情况的原因是rand函数⽣成的随机数是伪随机的,是通过某种算法⽣成的随机数。程序中在调⽤ rand 函数之前先调⽤ srand 函数,通过 srand 函数的参数seed来设置rand函数⽣成随机数的时候的种⼦,只要种⼦在变化,每次⽣成的随机数序列也就变化起来了。之所以前⾯每次运⾏程序产⽣的随机数序列是⼀样的,那是因为rand函数⽣成随机数的默认种⼦是1。
2023-09-14 19:45:52
104
原创 分支和循环 三
C语言结构有三种:顺序、选择、循环,用此三种结构就可以表示日常的所有情况。可用if、swhitch实现选择结构,用for、while、do while实现循环结构。
2023-09-13 14:15:34
96
原创 C语言数据类型和变量 二
C语⾔提供了丰富的数据类型来描述⽣活中的各种数据。使⽤整型类型来描述整数,使⽤字符类型来描述字符,使⽤浮点型类型来描述⼩数。所谓“类型”,就是相似的数据所拥有的共同特征,编译器只有知道了数据的类型,才知道怎么操作数据。
2023-09-09 13:16:02
131
原创 C语言常见概念 一
控制语句⽤于控制程序的执⾏流程,以实现程序的各种结构⽅式(顺序、选择、循环)。控制语句分以下三类:1.条件控制语句(分支语句):if语句、switch语句;2.循环语句:do while语句、while语句、for语句;3.转向语句:break语句、goto语句、continue语句、return语句。
2023-09-04 22:33:49
59
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人