自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 CPP学习之哈希表

哈希表是一种高效的数据结构,通过哈希函数建立元素与存储位置的映射关系,实现快速查找。本文介绍了哈希表的基本概念、冲突解决方法及实现方式。哈希冲突由不同元素映射到相同位置引起,可通过闭散列(开放定址法)和开散列(链地址法)解决。闭散列使用线性探测或二次探测寻找空位,而开散列通过链表将冲突元素存储在桶中。文章还提供了哈希表的模拟实现代码,包括线性探测版和哈希桶版,展示了插入、查找和删除等基本操作。哈希表设计需考虑负载因子,当元素占比超过阈值时进行扩容,以保持高效性能。

2025-10-05 18:54:05 636

原创 CPP学习之红黑树

红黑树是一种近似平衡的二叉搜索树,通过节点颜色约束(根黑、红节点子必黑、路径黑节点数相同)保证最长路径不超过最短路径两倍。实现时采用三叉链表结构,插入节点默认为红色,通过变色和旋转(单旋/双旋)维持平衡:当uncle节点为红时变色处理;否则根据节点位置关系进行旋转调整后变色。核心操作结束后需确保根节点为黑色。红黑树相比AVL树旋转次数更少,插入效率更高。

2025-09-16 22:58:26 587

原创 CPP学习之AVL树

AVL树是一种自平衡二叉搜索树,通过旋转操作保持左右子树高度差不超过1。文章介绍了AVL树的概念、节点定义和插入操作实现。插入分为两步:按照二叉搜索树规则插入节点后,调整平衡因子。当平衡因子绝对值达到2时进行旋转调整,包括单旋(左/右)和双旋(左右/右左)操作。旋转后需重新调整节点连接关系和平衡因子,确保树保持平衡状态。AVL树的平衡特性使其查找效率稳定在O(logN)。

2025-09-09 15:57:12 631

原创 CPP学习之map和set

本文介绍了C++中的关联式容器map和set。关联式容器存储键值对<key,value>,相比序列式容器具有更高的检索效率。map存储键值对,支持下标访问;set存储不重复元素,自动排序。两者底层都采用红黑树实现,查找时间复杂度为O(logN)。multiset和multimap允许键重复。文章详细讲解了容器的性质和使用方法,包括插入、查找、删除等操作,并提供了示例代码。关联式容器适用于需要快速查找和排序的场景。

2025-08-29 16:32:58 682

原创 CPP学习之搜索二叉树(BST)的使用和模拟实现

二叉搜索树(BST)是一种特殊的二叉树结构,具有以下特性:左子树所有节点值小于根节点,右子树所有节点值大于根节点。BST支持查找、插入和删除操作,查找效率取决于树的高度。文章详细介绍了BST的操作实现:查找通过比较节点值决定搜索方向;插入在找到合适位置后新增节点;删除处理四种不同情况。最后提供了C++的BST模板类实现,包含节点结构定义和核心操作函数,如插入、查找、删除和中序遍历等。该实现采用了递归方式,并考虑了深拷贝和赋值运算符重载等问题。

2025-08-28 18:17:50 682

原创 Linux学习之权限概念

本文介绍了Linux系统的权限管理机制。主要内容包括:1) Linux用户分为超级用户(root)和普通用户;2) 文件访问者分为拥有者(u)、组(g)和其他用户(o);3) 文件类型和基本权限(rwx)表示方法;4) 权限设置命令(chmod/chown/chgrp)和权限掩码(umask);5) 目录权限管理及粘滞位的使用场景。特别说明了粘滞位可以防止非文件所有者删除他人文件,提高了多用户环境下的文件安全性。文章通过具体命令示例展示了权限管理的实际操作。

2025-08-26 15:38:35 940

原创 CPP学习之priority_queue的使用及模拟实现

本文介绍了C++中的priority_queue容器适配器。priority_queue是一种按照升序或降序排列元素的队列,底层采用堆数据结构实现,默认是大堆,使用vector作为底层容器。文章详细讲解了其用法,包括常用接口、自定义类型元素的重载操作符,并通过日期类示例说明。最后提供了一个模拟实现代码,展示了如何自定义实现priority_queue,包括向上/向下调整堆、push/pop等核心操作,可以帮助读者深入理解priority_queue的内部工作原理。

2025-08-21 16:25:26 350

原创 CPP学习之多态

摘要: 多态允许通过基类指针或引用调用不同派生类的虚函数,实现"同一接口,不同行为"。实现多态需满足:1)基类指针/引用调用;2)虚函数被派生类重写。虚函数重写要求函数签名相同(协变和析构函数例外),建议使用override检查重写,final限制重写。抽象类含纯虚函数(=0),不能实例化,强制派生类实现接口。多态与重载(同作用域同名函数)、重定义(继承体系隐藏基类函数)形成对比,是面向对象的核心特性之一。

2025-08-04 19:29:48 780

原创 CPP学习之继承

继承是C++语法复杂性的其中一种体现;继承和组合:public继承是一种is-a的关系。也就是说每个派生类对象都是一个基类对象。组合是一种has-a的关系。假设B组合了A,每个B对象中都有一个A对象。建议优先使用组合而非继承。组合耦合性低,代码易维护,是一种黑箱复用,我们不用知道其内部逻辑;继承耦合性高,若基类有变动,则会对其派生类造成显著影响,是一种白箱复用,我们需要清楚知道继承细节。class stu;//用于父类友元函数public:int _age;int _num;

2025-07-31 18:10:02 674

原创 CPP学习之list使用及模拟实现

list是可以在常数范围内任意位置进行插入、删除、修改操作的有顺序性的容器,而且支持双向迭代,其底层是双链表结构,逻辑上连续但物理空间上不连续,只能通过指针来进行元素访问,无法使用下标随机访问。在任意位置的增删查改的实现上,list效率比vector高;在快排中,因为要取中的原因,vector支持下标随机访问,而list只能从开头或者尾部逐步迭代到对应位置,而且还需要额外的空间开销来存储节点的信息,这使得list的排序效率比vector要低。

2025-07-17 11:06:24 722

原创 CPP学习之vector的使用与模拟实现

本文主要简要介绍了stl的容器之一——vector的定义、重要接口和使用方法,也讲述了一些使用时的注意事项并模拟实现部分接口然后测试其功能,最后给出了7道考察vector使用的7道题目,这些题目都可以在leetcode上找到,望读者多做题,熟练掌握vector的使用方法和技巧。

2025-07-15 11:01:22 330

原创 CPP学习之初识模板

返回值类型 函数名(参数列表){}

2025-06-16 16:46:05 386

原创 CPP学习之内存管理

摘要:本文介绍了C/C++中的内存分布,包括栈、堆、数据段和代码段的特点及用途。详细对比了C语言的malloc/calloc/realloc/free和C++的new/delete动态内存管理方式,重点说明new/delete对自定义类型会调用构造/析构函数。还分析了operator new/delete的底层实现以及定位new表达式用法。最后总结malloc/free与new/delete的六大区别,包括初始化、类型安全、异常处理等方面。(149字)

2025-06-16 11:21:36 731

原创 CPP简单实现string类

摘要:本文展示了一个自定义字符串类string的实现,包含构造函数、拷贝构造、析构函数等基本功能,以及字符串操作(append、push_back、insert、erase等)、查找(find)和子串(substr)等功能。类中通过动态内存管理存储字符串数据,并实现了迭代器支持和运算符重载(如[]、+=、<等),是一个完整的字符串类实现示例。

2025-06-13 18:05:27 198

原创 C++学习之类和对象_3

构造函数内的赋值操作只能称之为赋初值,不能被称为初始化,因为初始化只能做一次,而赋值可以多次。

2025-06-03 10:45:26 647

原创 C++学习之类和对象_2

类在C++中有六个默认成员函数,包括构造函数、析构函数、拷贝构造函数、赋值运算符重载、普通对象取地址重载和const对象取地址重载。这些函数在未显式定义时由编译器自动生成。构造函数用于初始化对象,可以重载,且默认构造函数只能有一个。析构函数用于对象销毁时的资源清理,不能重载。拷贝构造函数用于通过已有对象创建新对象,必须使用引用参数以避免无限递归。赋值运算符重载用于将一个对象赋值给另一个对象。取地址重载函数通常不需要手动实现。这些默认成员函数在对象生命周期中自动调用,确保对象的正确初始化和清理。

2025-05-21 15:33:00 671

原创 C++学习之类和对象_1

/ 类体:由成员函数和成员变量组成 };// 一定要注意后面的分号class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。声明和定义全部放在类内private:char _name;int _age;int _class;

2025-05-09 19:36:14 928

原创 C++学习之初印象

C++是一种由Bjarne Stroustrup在C语言基础上发展而来的面向对象编程语言,它支持过程化、基于对象和面向对象的程序设计。C++引入了命名空间以避免命名冲突,提供了输入输出流对象cin和cout,并支持缺省参数和函数重载,使得函数调用更加灵活。此外,C++中的引用机制允许为变量创建别名,而不占用新的内存空间。这些特性使得C++在编程中具有更高的表达能力和灵活性,适用于各种复杂的软件开发场景。

2025-05-09 15:59:16 827

原创 数据结构之排序

堆排序使用堆来选数,效率就高了很多。时间复杂度:O(N*logN)空间复杂度:O(1)稳定性:不稳定//大堆int size;//总指向最后一个元素的下一位}hp;*a = *b;*b = temp;void adjust_up(hp_data_type* a, int child) //向上调整,子节点大于父节点,就互换while (child > 0) //当子节点循环到根时就停止elsebreak;assert(a);

2025-04-26 15:32:12 1091

原创 数据结构之二叉树

树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。树的第一个节点称为根节点,其没有前驱节点。除根节点外,其余节点被分成M个互不相交的集合,每一个集合是与树结构基本相同的子树。因此树是递归定义的。

2025-04-21 16:32:20 1083

原创 数据结构之栈和队列

栈是先入后出,队列是先入先出;用数组实现栈,用链表实现队列。

2025-04-09 16:36:04 1086

原创 C语言学习之程序编译与链接

FILE//进行编译的源文件LINE//文件当前的行号DATE//文件被编译的日期TIME//文件被编译的时间STDC//如果编译器遵循ANSI C,其值为1,否则未定义语法:#define使用后不要加;,否则容易出现错误;写name过程中不要有空格,不然会将空格后的内容归到stuff内;在使用定义好的name时,在预处理阶段实际上是将name替换为内容stuff,与函数的实现不一样,所以内容stuff要加括号来保证运行的正确性;举个例子:#define A22#define B。

2025-02-19 11:53:47 1077

原创 C语言学习之文件操作

【代码】C语言学习之文件操作。

2025-02-18 17:21:41 112

原创 C语言学习之动态内存管理

【代码】C语言学习之动态内存管理。

2025-02-17 11:22:15 184

原创 C语言小练习之通讯录

【代码】C语言小练习之通讯录。

2025-01-31 19:19:40 340

原创 零基础C语言学习之字符串函数及内存函数简要介绍

本文为个人学习字符串函数、内存函数与结构体内容的总结,仅供参考。以上就是今天要描述的内容,本文仅简单介绍了一些常用字符串函数和内存函数,如果有需求可以在上面查找相应的函数。字符串函数与内存函数最大的不同在于:字符串函数仅对字符串进行操作,但内存函数不仅可以对字符进行操作,也可以对整形、浮点型等其它类型变量进行操作。

2025-01-27 13:15:45 327

原创 Python应用- 荧光光谱数据处理 - 关于温度的传感方程(罗丹明B)

该程序用于计算不同温度下罗丹明B的荧光光谱的谱重心位置,从而揭示其与温度变化的传感方程。话不多说,直接上代码。

2024-11-21 23:04:40 442

原创 C语言进阶 之 数据的存储核心知识点笔记

符号位:0代表正号,1代表负号数值位:正数的原码,反码,补码都相同负数:原码直接将数值按照正负数的形式翻译成二进制就可以得到。反码:在原码的基础上,符号位不变,其他位取反补码:将反码+1对于整型来说,计算机内存储的就是数值的补码。定义:大端(存储)模式:是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;小端(存储)模式:是指数据的低位保存在内存的低地址中,而数据的高位,,保存在内存的高地址中。示例:练习题:3.浮点型存储示例:v=5.5二进制形式 =

2024-11-12 18:58:42 556

原创 零基础学C 之 用C做扫雷小游戏

所以我们可以先判断方阵中的元素满不满足上述条件,满足则给玩家提供(左上。递归思路: 首先将单个坐标的周围地雷的地雷信息传给一个3*3的数组,我们先称其为方阵, 方阵中心的元素不需要用到,所以是空符号。而起点坐标的正上、下、左、右的坐标不用通过数组判断,只要 满足递归条件就进行递归。则本坐标左上方的坐标将不会被玩家得知,如果至少有一方的地雷个数信息是’0’时,扫雷有一个规则,当这个坐标的正上方和正左方坐标的地雷个数信息都不为’0’时,则将左上方的坐标信息告知玩家,右上方、左下方、右下方的坐标亦是如此。

2024-10-26 19:00:11 961

原创 零基础学C语言 之 用C写井字棋小游戏

【代码】零基础学C语言 之 用C写井字棋小游戏。

2024-10-25 00:05:02 549

原创 C语言基础之分支循环语句

请注意,每个case分支的末尾都有一个break语句,这是为了防止程序继续执行下一个case分支的代码(这被称为“fall through”)。如果expression的值是1、2或3,程序将执行相应的case分支。总所周知,C语言是一门结构化的程序设计语言,这里的结构化是指C语言有顺序、选择和循环结构,本篇博客将简要描述选择、循环结构和中途退出循环结构的方法。如果条件为假(零),则退出循环。注意:在使用if语句时,最好都用大括号{}来括住要执行的代码,当你有多段代码时,光靠制表符来分段是不行的。

2024-10-19 14:16:22 485

原创 零基础Python学习,第十二章:Python基础综合案例(柱状图-全球GDP前八国家数据可视化)

链接:https://pan.baidu.com/s/1x2IdROXTrhZSH_Dy-r8Ffg。通过百度网盘分享的文件:1960-2019全球GDP数据.csv。

2024-10-13 21:33:24 689

原创 零基础Python学习,第十一章:Python基础综合案例(数据-地图可视化)

链接:https://pan.baidu.com/s/1lagYBEK1HSMibptDpK0OkQ。通过百度网盘分享的文件:疫情.txt。

2024-10-13 17:37:37 478

原创 零基础Python学习,第十章:Python基础综合案例(数据-折线图可视化)

# 第10章:Python基础综合案例# 数据可视化-折线图可视化# 1.json数据格式"""JSON是一种轻量级的数据交互格式。可以按照JSON指定的格式去组织和封装数据JSON本质上是一个带有特定格式的字符串主要功能:json就是一种在各个编程语言中流通的数据格式, 负责不同编程语言中的数据传递和交互。类似于:国际通用语言-英语"""# Python中json格式:1.字典;2.都是字典元素的列表# 导入json模块# import json# 准备符合

2024-10-10 13:28:55 732

原创 零基础Python学习,第九章:Python异常、模块、包

函数:print_file_info(file_name),接收传入文件的路径,打印文件的全部内容,finally关闭文件对象函数:appendtofile(filename,data),将字符串反转返回函数:substr(s,x,y),按照下标x和y,对字符串进行切片。创建一个自定义包,名称为:my_utils(我的工具)函数:str_reverse(s),接受传入字符串,file_util.py(文件处理相关工具,内含:)str_util.py(字符串相关工具,内含:)file_util模块。

2024-10-06 21:18:18 1210

原创 零基础Python学习,第八章:文件操作

周杰轮,2022-01-01,100000,消费,正式。林俊节,2022-01-01,300000,收入,正式。林俊节,2022-01-02,100000,消费,测试。林俊节,2022-01-03,100000,消费,正式。张学油,2022-01-01,100000,消费,正式。王力鸿,2022-01-01,500000,消费,正式。刘德滑,2022-01-01,300000,消费,测试。刘德滑,2022-01-02,100000,消费,正式。刘德滑,2022-01-03,300000,消费,正式。

2024-10-05 15:55:43 446

原创 零基础Python学习,第七章:函数进阶

【代码】零基础Python学习,第七章:函数进阶。

2024-10-04 11:39:31 301

原创 零基础Python学习,第六章:数据容器

【代码】零基础Python学习,第六章:数据容器。

2024-10-02 20:54:02 817

原创 零基础学习Python,第五章:函数

【代码】零基础学习Python,第五章:函数。

2024-09-30 09:30:24 382

原创 零基础Python学习,第四章:循环语句

【代码】零基础Python学习,第四章:循环语句。

2024-09-29 17:24:04 324

C语言小练习之通讯录源代码

代码

2025-01-31

不同温度下的光谱数据,仅截取550nm-700nm

不同温度下的光谱数据,仅截取550nm-700nm

2024-11-21

不同温度下的光谱数据,仅截取550nm-700nm

不同温度下的光谱数据,仅截取550nm-700nm

2024-11-21

空空如也

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

TA关注的人

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