自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 收藏
  • 关注

原创 Linux入门----yum的理解

先举例我们平常用的手机像小米,华为等我们在下载软件的时候应该主要都是在手机的应用市场下载eg.小米应用市场.华为应用市场等,同理我们的linux也是yum在链接软件包的时候也是从一个"应用市场”去找到要下载的软件包.但是我们主流用的centos,Fedora、OpenSUSE等主流系统都是国外的.这也就是意味着我们在系统官方指定的yum源时指向的是国外的软件源,所有会失败。自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

2025-01-19 22:32:34 370

原创 Linux入门----权限的基本理解

在计算机系统中,(Permission)是指用户或进程对系统资源(如文件、目录、设备等)进行操作的能力。权限控制是操作系统安全机制的重要组成部分,它确保只有授权的用户或进程可以访问和操作特定的资源,从而保护系统的安全和数据的完整性。简单来说。

2025-01-11 20:12:17 1014

原创 力扣题册-----43字符串相乘

由参数的俩个位数决定,假设俩个参数都取最小值 (如:三位数的最小值是10^2)(10^n-1) ------>得出最大的位数可以取n+m位的数。(10^(n-1))----->得出可以取n+m-1位的数。

2024-03-31 20:26:37 414 1

原创 c++初阶篇----string的底层模拟

public:public:string(){}//各个成员函数的实现迭代器的实现{typefef 一个指针,模拟指针,这里用的指针}先实现构造函数{注意初始化的动态内存开辟}这里还要注意如何实现缺省值(赋予nullptr?赋予空),拷贝构造函数{开辟字符串长度大小的空间,strcpy内存复制}c_str(){返回数组内容}

2024-03-29 17:00:43 1172

原创 C++初阶篇----string类

与 C 字符串的转换: 支持与 C 风格字符串(以 null 结尾的字符数组)之间的转换,可以通过 c_str() 方法获取 C 字符串表示。: string 类是标准库中的容器之一,因此支持类似于向量(vector)等容器的一些操作,如迭代器遍历、大小查询等。: 提供了丰富的字符串操作方法,如连接(concatenate)、截取(substring)、查找(find)、替换(replace)等。它提供了一系列方法来创建、操作和处理字符串,同时也隐藏了底层的内存管理细节,使得字符串操作更加方便和安全。

2024-03-29 16:56:53 972

原创 C++初阶篇----STL的介绍

STL(标准模板库)是 C++ 中的一个重要组成部分,提供了许多常用的数据结构和算法模板,使得 C++ 编程更加方便和高效。STL 的设计理念是将常用的数据结构和算法抽象成通用的模板,使得它们可以被广泛地重用,并且保证了高效性和标准化。STL 中的许多算法接受函数对象作为参数,使得算法的行为可以根据用户的需求进行定制。STL 提供了大量的算法,涵盖了各种常见的操作,包括排序、搜索、复制、查找等。STL 中的算法通常使用迭代器来操作容器中的数据,这使得算法与容器的具体实现解耦,提高了代码的灵活性和可重用性。

2024-03-29 16:56:17 283

原创 C++初阶篇----内存管理

return 0;注意:在申请自定义类型的空间时,new会调用构造函数,delete会调用析构函数new的原理调用operator new函数申请空间在申请的空间上执行构造函数,完成对象的构造delete的原理在空间上执行析构函数,完成对象中资源的清理工作调用operator delete函数释放对象的空间new T[N]的原理。

2024-03-29 16:55:25 1359

原创 C++初阶篇----类与对象中卷

注意:类中如果没有涉及资源申请时,拷贝构造函数是否写都可以;一旦涉及到资源申请时,则拷贝构造函数是一定要写的,否则就是浅拷贝。

2024-03-06 19:00:19 1071

原创 C++初阶篇----类与对象下卷

通过将一个函数或类声明为另一个类的友元,可以允许该函数或类访问该类的私有成员,即使它们通常不能直接访问这些私有成员。静态成员是属于类本身而不是类的实例的成员。静态成员可以被所有该类的实例共享,并且可以通过类名访问,而不需要创建类的实例。内部类是外部类的友元类,内部类可以访问外部类的对象参数,但是外部类不是内部类的友元。友元类的所有成员函数都可以是另一个友元函数,访问另一个类中的非公有成员。类是对某一类实体(对象)的来进行描述的,描述该对象的特征属性。它不属于外部,不能通过外部的类的对象去访问内部类的成员。

2024-03-06 18:59:47 871

原创 C++初阶篇----类与对象上卷

/成员函数 //成员变量 };class 为定义类的关键字,name为类的名字类的定义方式有俩种若成员函数在类中定义,那么编译器可能会当作 内联函数来处理类声明放C++中通过类可以将数据 以及 操作数据的方法进行完美结合,通过访问权限可以控制那些方法在类外可以被调用,即封装,在使用时就像使用自己的成员一样,更符合人类对一件事物的认知。

2024-03-02 12:24:45 1038

原创 类与对象的实践----日期相关函数的实现

日期函数是用于处理日期和时间数据的函数,通常包括获取当前日期时间、日期时间格式化、日期时间比较、日期时间计算等功能。这些函数能够帮助程序员在软件开发中轻松地处理各种与日期和时间相关的任务。日期类函数实现的冰山一角,还有许多可以补充的,up目前水平不足,有哪里不多的,希望能够指出,日后将更完善其他相关知识。

2024-03-02 12:23:31 390

原创 堆排序----C语言数据结构

堆排序的排序过程包括了 n-1 次交换和堆调整的操作。因此,排序过程的总时间复杂度为 O((n-1) * log n),约等于O(n log n)。构建最大堆的时间复杂度是O(n),其中 n 是待排序序列的长度。堆排序的时间复杂度是相对较好的,且具有原地排序的特点。然而,需要注意的是,堆排序在实际应用中可能会因为其不具备稳定性(相同元素的相对位置可能发生变化)和对缓存的不友好等原因而被其他算法替代。虽然堆排序的时间复杂度较好,但在实际应用中,由于其不具备插入和删除操作的优势,因此在一些特殊方面很少被选择。

2024-02-09 22:53:56 771

原创 C++初阶篇----新手进村

相较于C语言,C语言有32个关键字,而C++则有63个关键字命名空间的普通定义//命名空间的普通定义命名空间的嵌套定义//命名空间的嵌套定义、int c;int d;同一个命名空间的合并同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中使用auto修饰的变量,是具有自动存储器的局部变量但实际应用中并不多见,这是为什么?:auto不再是一个存储类型指示符,而是作为一个新的类型指示符来指示编译器,auto声明的变量必须由编译器在编译时期推导而得。

2024-02-09 22:41:01 6122 1

原创 插入排序、希尔排序----C语言数据结构

该方法的基本思想是:设待排序元素序列有n个元素,首先取一个整数gap(小于序列元素总数)作为间隔,所有间隔为gap的元素放在同一个逻辑数组中,在每一个逻辑数组中分别实行直接插入排序。:在平均情况下,插入排序的时间复杂度为 O(n^2)。这是因为对于每个未排序的元素,平均需要比较 n/2 次(在有序的部分中找到插入位置),而每次比较的复杂度是 O(1)。希尔排序又称为缩小增量排序,是对之前介绍的插入排序的一种优化版本,优化的地方在于:不用每次插入一个元素时,就和序列中有序部分中的所有元素进行比较。

2024-02-04 20:59:19 924

原创 选择排序、冒泡排序----C语言数据结构

在最坏的情况下,即输入数组是逆序的状态,选择排序每次都需要比较未排序部分的所有元素,找到最小值,然后进行交换。对于长度为 n 的数组,第一次需要比较 n 次,第二次需要比较 n-1 次,以此类推,总的比较次数是 n + (n-1) + (n-2) + …冒泡排序是比较基础的排序算法之一,其思想是相邻的元素两两比较,较大的数下沉,较小的数冒起来,这样一趟比较下来,最大(小)值就会排列在一端。最优:待排序数组是有序的,此时,内层的循环不用交换,只有外层循环遍历,所以时间复杂度为O(n^2)

2024-02-04 20:58:31 1283

原创 快速排序的多种实现方式----C语言数据结构

尽管快速排序是一种高效的排序算法,但它也有一些缺点。以下是一些常见的快速排序缺点:不稳定性: 快速排序是一种不稳定的排序算法。如果原始数据中存在相等元素,它们在排序后的相对顺序可能被改变,这与稳定性排序算法的特性相违背。对重复元素的敏感性: 当待排序的数据中存在大量重复元素时,快速排序的性能可能下降。这是因为在分区过程中,相同的元素可能被分到不同的子数组中,导致递归深度增加,性能减弱。对已经有序的数据表现差: 如果输入数据已经近乎有序,快速排序的性能会明显减弱。

2024-01-31 16:45:42 1028

原创 归并排序----C语言数据结构

在最坏情况下,递归树的深度达到 log n ,因此空间复杂度是 O(log n)。的排序算法,它的基本思想是将原始数组划分成较小的数组,然后递归地对这些小数组进行排序,最后将排好序的小数组合并成一个整体有序的数组。将一个数组分成许多个小数组(直到最后单个数组有序,也就是只有一个元素),再将这些有序的小数组递归,由下往上返回。归并排序是一种稳定的排序算法,其时间复杂度为 O(n log n),这使得它在大规模数据集上具有较好的性能。递归的算法类似于二叉树后序遍历的时间复杂度,也就是递归深度,log n。

2024-01-31 16:44:23 448

原创 vs中debug和release的区别

在这种模式下,编译器会应用各种优化,以提高代码的执行效率和减小生成的二进制文件的大小。Debug 模式:通常不进行优化,以方便调试。编译器会生成包含调试信息的二进制文件,以便开发者在调试过程中能够更容易地理解代码、查看变量的值、设置断点等。因为不进行优化,所以生成的代码可能会较慢,但更易于调试。总体而言,Debug 模式更适合开发和调试阶段,而 Release 模式则更适合最终产品的发布,以取得更好的性能和减小软件包的体积。Release 模式:生成经过优化、去除调试信息的代码,以提高性能和减小体积。

2024-01-17 22:33:49 649

转载 【无标题】

完全二叉树是一种特殊的二叉树,其中每一层,除了最后一层外,都是完全填充的,并且所有节点都尽可能地向左对齐。这里我们将解析为什么具有n个结点的完全二叉树的深度为 ([ \log_2 n ] + 1) 或者 ([ \log_2 (n+1) ])。这就是具有 (n) 个结点的完全二叉树的深度为 ([ \log_2 n ] + 1) 或者 ([ \log_2 (n+1) ]) 的解析。这个不等式的左边表示深度为 (d-1) 的二叉树最多的节点数,右边表示深度为 (d) 的二叉树最多的节点数。

2024-01-17 21:48:17 55

原创 二叉树的实现----C语言数据结构

用一个数组构建二叉树,将数组的每一个元素,像前序遍历一样,第一个赋予根节点,第二个根节点的左子树,第三个根结点的右子树,以此类推:值先给父节点,再给父节点的左子树,再给父节点的右子…在二叉树的销毁中,采用后序遍历是最佳的,因为对比中序和前序,当遍历到此结点时,销毁此节点,会丢失此节点的左右子树结点,不利于遍历到下一个结点.(当然可以设置临时变量记录此节点也是可以实现的)这里下标用的指针,是因为函数栈帧,在递归的时候,若传的是int pi ,那么这个值不会受上一个函数中的pi++影响,pi的值不会改变.

2024-01-17 13:59:33 976

原创 线性表的从上而下----顺序表与链表

线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的(注意,这句话只适用大部分线性表,而不是全部。而插入的第一个结点,要把它变成指向一块区域的结构体指针,需要改变它的值(指针)在之前都知道,int max(int x, int y)并不改变原有的值,只是形参的复制,这里也是一样。先找到需要插入所需的位置,这里以找到val的值,然后插入到val的前面 为例。的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。在实际上的物理结构是没有联系的。

2023-12-10 17:22:07 111 1

原创 Linux入门---基本指令

Linux的文件系统是采用级层式的树状目录结构,此结构最上层是根目录“/” ,然后在此目录下再创建其他目录对与linux而言,一切皆文件语法:ls-[选项][目录或者文件]作用:列出该目录下的所有子目录与文件常用选项-a 显示出该目录下的所有文件,包括隐藏文件(.开头的隐藏文件)-d 查看目录的属性-l 列出文件的详细属性。

2023-12-03 18:59:08 89

原创 力扣实践题册----基础篇

给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。更改数组 nums ,使 nums 的前 k 个元素包含唯一元素,并按照它们最初在 nums 中出现的顺序排列。nums 的其余元素与。快指针遍历整个数组,若快指针指向的值和这个指针的前一个值不相同,那么就将值赋值到慢指针里。然后返回 nums 中唯一元素的个数。暴力求解法,再定义一个数组,遍历原数组,将不同的元素放到这个数组中。nums 的大小不重要。

2023-10-29 20:28:40 90

原创 力扣实践题册----基础篇

这题可以用快慢指针的思维(也可以是快慢下标),定义俩个指针dest,str,都从数组的第一个元素开始,当dest指向的值等于val时就dest++,不是就将dest赋值给str。给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。若按可以额外开辟空间,可以直接动态分配一个数组来存储没有val值得数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

2023-10-29 20:28:20 56

原创 C语言实践练习题----day15

题目描述 给定一个长度为n的数组nums,请你找到峰值并返回其索引。数组可能包含多个峰值,在这种情况下,返回任何一个所在位置即可。现在有一个长度为 n 的正整数序列,其中只有一种数值出现了奇数次,其他数值均出现偶数次,请你找出那个出现奇数次的数值。3.对于所有有效的 i 都有 nums[i]!= nums[i + 1]1.峰值元素是指其值严格大于左右相邻值的元素。2.假设 nums[-1] = nums[n] = − ∞ −∞。4.你可以使用O(logN)的时间复杂度实现此问题吗?

2023-10-26 19:45:39 76

原创 c语言进阶----预处理

_FILE__ //进行编译的源文件__LINE__ //文件当前的行号__DATE__ //文件被编译的日期__TIME__ //文件被编译的时间__STDC__ //如果编译器遵循ANSI C,其值为1,否则未定义这些预定义符号都是语言内置的使用#define指令可以创建常量宏和函数宏。常量宏会在源代码中的每个出现位置被替换为定义的值,函数宏可以进行更复杂的文本替换。注意在宏定义时是不需要加上”;“的,#define pi3.141。

2023-10-26 19:44:46 89

原创 C语言之通讯录版本----从入门到精通

此番为 疏通关于用C语言实现通讯录三个版本(从静态到动态到可以文件保存的三个版本)的思路。自定义结构体、动态内存,文件流的知识体系在开始构建思路,先明白通讯录要实现那些功能,然后再思考代码实现的逻辑增加联系人删除联系人查找联系人修改联系人显示所有联系人排序动态储存版本:结构体的变化,结构体变量初始化的变化文件流版本:增加文件信息加载到变量的函数,增加保存数据致文件的函数源文件:头文件定义宏,全局自定义结构体,标准库等。

2023-10-23 20:31:57 668

原创 C语言----c文件读写

文件(File)是计算机系统中的基本概念,它用于存储数据、信息和程序代码。文件是数据的有序集合,可以包含文本、图像、音频、视频、程序等各种类型的信息。在程序设计中,我们一般谈的文件有两种:程序文件、数据文件。

2023-10-21 20:49:47 124

原创 库函数atoi的介绍应用及模拟----C语言实现

解析 C 字符串 str,将其内容解释为整数,该整数作为 type int 的值返回。该函数首先根据需要丢弃尽可能多的空格字符(如 isspace ),直到找到第一个非空格字符。然后,从此字符开始,取一个可选的首字母加号或减号,后跟尽可能多的 10 进制数字,并将它们解释为数值。字符串可以在构成整数的字符之后包含其他字符,这些字符将被忽略,并且对此函数的行为没有影响。如果 str 中的第一个非空格字符序列不是有效的整数,或者由于 str 为空或仅包含空格字符而不存在此类序列,则不执行转换并返回零。

2023-10-18 22:48:07 147 1

原创 库函数模拟strncpy----C语言实现

Copy characters from string 将源的第一个字符数复制到目标。如果在复制 num 个字符之前找到源 C字符串的末尾(由 null 字符表示),则目标将填充零,直到总共写入 num 个字符为止。如果源长度超过num,则不会在目标末尾隐式附加空字符。因此,在这种情况下,不应将目标视为以空结尾的 C 字符串(这样读取它会溢出)。将源的第一个数字字符追加到目标,外加一个终止空字符。如果源中 C 字符串的长度小于 num,则仅复制终止空字符之前的内容.

2023-10-17 21:14:55 45

原创 C语言知识-数据的类型

char //字符数据类型short //短整型int //整型long //长整型long long //更长整型float // 单精度浮点数double //双精度浮点数类型的基本归类。

2023-10-11 22:58:01 109 1

原创 库函数模拟memcpy----C语言实现

复制内存块将字节数的值从源指向的位置直接复制到目标指向的内存块。源指针和目标指针指向的对象的基础类型与此函数无关;结果是数据的二进制副本。该函数不检查源中的任何终止空字符 - 它总是准确地复制字节数。为避免溢出,目标和源参数指向的数组大小应至少为字节数,并且不应重叠(对于重叠的内存块,memmove 是一种更安全的方法)。移动内存块将字节数的值从源指向的位置复制到目标指向的内存块。复制就像使用了中间缓冲区一样,允许目标和源重叠。源指针和目标指针指向的对象的基础类型与此函数无关;

2023-10-01 22:28:57 106 2

原创 库函数模拟strcat----C语言实现

2.函数返回值返回char *destination 类型的指针

2023-10-01 19:52:12 102 1

原创 库函数模拟strcmp----C语言实现

将 C 字符串 str1 与 C 字符串 str2 进行比较。此函数开始比较每个字符串的第一个字符。如果它们彼此相等,则继续以下对,直到字符不同或达到终止空字符。此函数执行字符的二进制比较。有关考虑特定于区域设置的规则的函数,请参阅 strcoll。

2023-09-26 19:38:56 158 1

原创 C语言实现小游戏----[扫雷]

目前的扫雷设计较简单,还缺少一些特色玩法,如点击附近没有雷的话,周围地区也会因此交互展开,此逻辑可通过设计递归函数实现。扫雷,只需熟悉数组,函数等C语言前几章的基础知识便可以实现。

2023-09-23 19:13:00 332 3

原创 C语言实践练习题----day14

珠玑妙算游戏(the game of master mind)的玩法如下。计算机有4个槽,每个槽放一个球,颜色可能是红色(R)、黄色(Y)、绿色(G)或蓝色(B)。例如,计算机可能有RGGB4种(槽1为红色,槽2、3为绿色,槽4为蓝色)。作为用户,你试图猜出颜色组合。打个比方,你可能会猜YRGB。要是猜对某个槽的颜色,则算一次“猜中”;要是只猜对颜色但槽位猜错了,则算一次“伪猜中”。注意,“猜中”不能算入“伪猜中”。

2023-09-12 20:48:31 62

原创 C语言小游戏---猜数字游戏(原理超级简单)

小游戏的制作思路,原理简单

2023-09-11 23:57:53 202

原创 C语言实践练习题----day13

有一种兔子,从出生后第3个月起每个月都生一只兔子,小兔子长到第三个月后每个月又生一只兔子。例子:假设一只兔子第3个月出生,那么它第5个月开始会每个月生一只兔子。一月的时候有一只兔子,假如兔子都不死,问第n个月的兔子总数为多少?数据范围:输入满足 1≤n≤31思路:可查阅斐波那契数列的原理,此月的数量等于前俩个月数量的总和。

2023-09-10 20:16:24 56 1

原创 C语言实践练习题----day12

输入一个整数,将这个整数以字符串的形式逆序输出程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001思路:法一 :将输入后的整形转换成char放进一个数组,再按逆序遍历打印法二: 直接让输入的数字变成字符串 scanf(“%s”,str),再逆序打印。

2023-09-08 21:07:08 109 1

原创 c语言实践练习题----day11

给定一个二进制数组 nums , 计算其中最大连续 1 的个数。输入:[1,1,1,0,1,1,1,1]输出:4。

2023-09-07 20:48:47 60

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除