自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 红黑树的插入删除

红黑树的插入删除

2022-06-10 15:41:14 319 1

原创 AVL树的增删查及其基本思想的理解

AVL通过平衡因子方式进行的增删查改

2022-06-08 17:23:48 167

原创 C++知识总结复习04

C++知识复习

2022-06-07 19:09:36 90

原创 C++知识总结复习03

知识复习

2022-06-05 15:28:34 72

原创 C++知识复习总结02

C++复习

2022-06-05 11:01:56 56

原创 C++知识复习总结01

知识总结

2022-06-03 18:42:27 63

原创 (linux)认识文件

文件的基本概念文件=文件内容+文件属性 --->(创建一个新文件也是占空间的)关于打开的文件?打开的文件是要加载到内存的目前我所了解的是文件的属性要加载到内存OS中可不可能存在多个打开的文件?可能需不需要管理?需要,先描述再组织对于每一个打开的文件,都有一个struct file的结构体,描述着文件的相关信息认识open,write和read函数open函数,内核提供的一个接口函数,用于打开一个文件解释一下划线这个的参数意思。 第一个表示你要.

2022-04-19 22:03:57 210

原创 (Linux)关于进程

背景知识冯诺依曼体系及操作系统关于PCB(进程控制块)OS中可不可能存在大量的进程? 可能那OS是不是需要将这些进程管理起来? 是的如何管理? 先描述再组织如何描述? OS在进程创建之时,为其创建PCB,这里记录的进程的所有属性信息。当然还会创建其他一些的数据结构,这里先不谈而有了PCB,OS就能以统一的视角将进程管理起来,比如采用双向链表的方式(不一定就是这样,只是为了理解)这样,所有的进程管理任务与进程对应的程序毫无关系而与PCB强相关在PCB只是.

2022-04-17 16:10:34 831

原创 模拟实现string类

目的:通过模拟实现库里的string(只实现核心,或常用的功能) ,加深对其理解在代码中已给较多注释。相信看懂已经没有什么难度。这里便不再给出。有疑问可私信或评论namespace my_string{ class string { typedef char* iterator; typedef const char* const_iterator;//string类并不常用迭代器,库是为了保存与其他容器的一致性 public: //给具有const属性的使.

2022-03-19 11:10:51 86

原创 C语言实现希尔排序

希尔排序思想核心:在直接插入排序的基础上,进行多次的预排序。使其接近有序(因为在接近有序的条件下,直接插入排序的效率非常高)直接插入排序思想:(升序)将一个数插入一个有序数组中,从后往前寻找,找到比他小的。插入到比他小的那个数的下一个位置即可下面是具体代码 //arr表示数组,sz表示数组大小 for (int i = 0; i < sz-1; i++) { //将x插入[0,i]有序区间里 int end = i; int x = ar

2022-03-18 22:24:53 492

原创 C语言实现归并排序

归并排序的核心思想:如果有两个已经有序的数组我们可以创建一个新的数组,然后比较大小,将两个有序数组的数据一个一个的拿下来放到新数组中。这样完成之后就是一个有序的数组。再把值赋给原数组即可完成排序。关键点:前提是两个有序数组接下来实现代码框架void _merge_sort(int* arr,int*tmp,int left,int right){ if (left >= right)//递归终止条件 { return; } int mid = (lef

2022-03-18 21:42:02 690

原创 C语言实现快速排序

以整形数据且以升序为例快速排序核心思想:在待排序数组中找一个key值单次排序后,左边放比key小的,右边放比key大的值左右两遍不断重复此操作。从而实现排序。由于递归深度为logN,且数据为N。易得出时间复杂度为N*logN实现基本框架void _quick_sort(int left, int right, int*arr){ if (left >= right) { return; } int mid=find_mid(arr,left,righ

2022-03-18 19:43:09 1764

原创 C语言实现链式二叉树

typedef char BTDataType;typedef struct BinaryTreeNode{ BTDataType _data; struct BinaryTreeNode* _left; struct BinaryTreeNode* _right;}BTNode;// 通过前序遍历的数组"ABD##E#H##CF##G##"构建二叉树BTNode* BinaryTreeCreate(BTDataType* a, int n, int* pi);// 二叉树销毁v..

2022-01-26 13:48:26 820

原创 初阶数据结构前部分总结

1.什么是数据结构指将数据按特定的规则,存储到特定的结构中2.算法效率指解决问题的效率。解决某问题的算法的好坏取决于所需内存空间和花费的时间而其时间和空间用复杂度来衡量(采用大O的渐进表示法)时间复杂度:算法运行的快慢》》》》基本操作的执行次数空间复杂度:算法运行所需的空间》》》运行中额外产生的内存消耗推导大O阶方法(以时间复杂度为例)1.用常数1取代运行时间中所需要的加法常数2.在修改后的运行次数函数中,只保留最高阶项3.如果最高阶项存在且不是1,则去出与这个项

2021-12-05 20:11:51 259

原创 数据在内存中的存储方式

准确的说,数据在内存中有两种不同的储存形式,一种用来存储浮点型。一种用来存储整形。下面进行具体说明整形细分的化有char,int ,long ,shot等,而这些又可以有符号的和无符号的。这些类型想必都认识,这里便不一一列举了整形在内存中是以补码得的形式储存的,而转化的规则如下1.对于有符号的负数来说,转化成补码的规则如下原码:原来的数翻译出来的二进制数反码:符号位不变,其他位按位去反补码:反码加+12.而对于有符号的正整数或者无符号数,他们的原码,反码,补码是相

2021-08-14 08:32:42 2688

原创 对于函数栈帧的解释

函数栈帧的预备知识1.维护栈帧的两个寄存器esp(栈顶指针),ebp(栈底指针),其他寄存器还有eax,ebx,ecx,edx,edi,eax等2.主函数main也是由其他函数调用的,具体是由编辑器确定(有兴趣的可以自行调试查看)3.push指往栈顶上压一个元素,同时esp指向下一个内存块(一个内存块4个字节)5.pop指在栈顶上释放一个元素,同时esp指向上一个内存块4.栈区的使用习惯的由高地址向低地址使用以一个简单的程序为例目录一、主函数的创建二、test函数的创..

2021-08-12 22:37:54 168 1

空空如也

空空如也

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

TA关注的人

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