自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 http详解

http是应用层的一个协议,全称为超文本协议.......

2022-11-20 08:00:00 212 1

原创 Linux多进程详解(进程间通信)

Linux多进程详解,并行并发,fork,exec,进程间通信,匿名管道通信,有名管道通信,内存映射,共享内存通信,信号通信,信号集

2022-06-09 09:00:00 2832

原创 Linux文件操作

Linux中有一句非常经典的话—一切皆文件,Linux将一切硬件都通过文件的方式进行处理,所以对于文件的操作是一门必备学习。每一个进程中会建立一个虚拟地址空间,对文件等进行控制,每个文件进程创建的文件占用一个文件描述符,内核空间中有一个PCB(进程控制块)其中有文件描述符,每个进程打开一个文件描述符会占用一个位置,每次占用的位置都是从最小的位置开始,前三个位置的状态被系统占用默认打开状态。是一个文件块中的信息,用函数可以获取路径下的文件信息每一个文件都有自己的文件类型符st_mode,通过操作这个文件描

2022-06-07 08:00:00 377

原创 C++内存布局及动态内存分配

C++内存布局及动态内存分配细节

2022-05-31 12:29:17 444 1

原创 C++类与对象(三)---友元、内部类

友元由于我们对成员变量都要进行封装,我们想要用封装后的成员变量时编译器就会报错,为了满足这一需求就产生了友元。class A{ friend class B;//友元标识private: int _a; int _b;};class B{public: void fun(const A&a) { cout << a._a << endl; }private: int i;};B类就可以访问A类中的私有成员。因为cout的输出流对

2022-05-31 12:25:02 127

原创 C++类与对象(二) --- 初始化列表、隐式类型转换、静态成员函数及变量

初始化列表成员变量若为以下形式&引用、const变量、自定义成员类型,这些必须在定义时初始化的类型。我们就要采用初始化列表对这些类型的成员变量进行定义。初始化列表可以理解为:对对象成员变量进行定义。初始化列表只能写一次,定义也只能定义一次。其他类型的变量可以在初始化列表进行初始化,也可以在函数体初始化。class A{public: A(int a,int b, int c) :_a(a) ,_c(c)

2022-05-27 10:54:54 196

原创 C++类与对象(一)---this指针、默认成员函数

类与对象class与structclass在C++中默认私有;struct在C++中默认共有公有(public):在类外可以被访问。私有(private):在类外不能被直接访问。成员函数在类内定义的函数默认都是inline,一般情况下短小的函数可以直接在类内定义,长一点的函数声明和定义分离。对象类创建对象的过程叫做类的实例化。C++类创造一个对象的空间和C不同,一个对象的内存空间只有其成员变量的大小,其成员函数是在公共代码段,如图所示。每一个对象的大小只有成员变量的大小。没有成员

2022-05-19 11:06:59 445 4

原创 C++---引用超详细讲解

引用引用的几点要求:引用必须要赋初值,并且不能再改变。一个变量可以拥有多个引用。引用一旦引用一个实体就不可以再被改变。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传可以看到这块报出错误,具体原因是因为变量的传递只能传递给权限更严格的变量!![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传在下面的代码处可以看到double类型变量d传递给e编译器报错,这是因为因为每次传值时会产生临时变量,先将值传给临时变量然后将临时变量再传递进行传递。[外链图

2022-05-13 12:16:35 799 2

原创 C++初识---缺省及重载

缺省参数也叫做默认参数,当没有参数时会使用参数的默认值。缺省分为:全缺省半缺省:必须从右往左缺省,并且是连续的声明和定义不能同时出现缺省声明和定义如果是分开的话,只能在声明时缺省,因为声明是在头文件中,在函数编译中展开而定义在链接阶段才会进行函数的重链接。int f(int a = 10, int b = 20)//全缺省 int f(int a, int b = 20)//半缺省如果声明和定义是在两个文件中,由于编译只在当前文件进行,所以要对函数进行声明,并且缺省必须在声

2022-05-12 10:29:37 433 1

原创 八大排序算法原理及复杂度分析----用C实现

快排,希尔排序,计数排序等常见排序算法

2022-05-05 14:29:33 257 4

原创 快速排序几种实现方法及其优化

快速排序“hoare” 快速排序思想每次找到一个target位置,一般将target设到第一个位置,然后用left和right两个指针进行搜索,right找比target值小的数值,left找比target值大的数值,然后两者交换。当left和right相交时将target交换到此位置,这样可以保证target的左边都比其值小,右边都比其值大。由于right找的是比target值小的数值,所以每次让right先走,第一种情况是right找到了比其小的,然后left没找到位置就和right相遇了,此时r

2022-04-20 16:47:51 545 4

原创 二叉树基本操作实现

链式二叉树数组表示二叉树要求二叉树必须是完全二叉树或者是满二叉树,所以二叉树还可以用链式表示其结构代码如下:typedef int DataType;typedef struct BinaryTree{ struct BinaryTree* _left; struct BinaryTree* _right; DataType data;};BTNode前序遍历前序遍历的顺序为根,左子树,右子树,所以也被称为先根遍历。如图以这个二叉树为例:这

2022-04-16 15:51:57 3574 2

原创 堆排序--TOP-K问题解决及复杂度分析

堆排序算法实现,TOP-K问题解决代码及复杂度分析。

2022-04-09 17:06:59 1710 2

原创 数据结构--堆及堆排序的代码实现

堆堆是一个按照完全二叉树顺序存储方式在一个二维数组中的数据结构,其性质为堆中的某个结点总是不大于或不小于父节点的值堆是一个完全二叉树每个结点大于父节点的叫最小堆,每个结点小于父节点的叫最大堆这就是一个最小堆,因为其父节点都小于对应的子节点。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yQ5B5vtT-1649232454623)(E:/mds/images/最小堆.png)]比如说1小于5 和7,5小于6和9…堆的根节点总是放置最小或

2022-04-06 16:11:43 902

原创 数据结构--树及二叉树的性质

树树是一种非线性的数据结构,由n(n>=0)个有限结点组成的一个具有层次关系的集合。树相关概念:结点的度:结点含有子树的个数称为结点的度;A的度为4。叶子节点:度为0的结点;如G、H、I等。父结点:一个结点若有子结点,则这个结点就是其子结点的父亲结点;如E为H和I的父亲结点。子结点:一个节点含有子树的结点称为该结点的子节点;如G为D的子结点。根结点:它是同一棵树中除本身外所有结点的祖先,没有父结点;如A。兄弟结点:具有相同父结点的结点互称为兄弟结点;如H和I。树的度:一棵树中,最大

2022-04-01 15:24:31 1052

原创 数据结构--队列及循环队列实现

队列:队列和栈一样也是一种表,但是他与栈不同的是在一段插入数据,在另一端删除数据。队列基本操作是入队(enqueue),它是在表的队尾(rear)插入元素,以及出队*(dequeue),它是在队头(front)删除或返回一个元素。队列和栈一样都可以用任何表来实现,本文选择用数组实现队列。队列结构:typedef int DataType;typedef struct QueueNode { DataType data; struct QueueNode* next;}QNode;t

2022-03-30 15:39:51 1655 1

原创 数据结构--用数组实现栈

栈栈是一个带有限制性的表,它只能在栈顶插入和删除,栈最基本的操作就是push(入栈)和pop(出栈),栈又叫做LIFO表(Last in,First out list)。由于栈是表结构,所以可以用数组或者链表实现其结构。栈的数组实现栈的结构:typedef int DataType;typedef struct Stack { DataType* a;//定义一个数组来存储数据 int top;//记录栈顶位置 int capacity;//控制栈的大小}ST;栈的基本操作声明:

2022-03-29 16:57:58 2466

原创 顺序表--链表实现

链表链表是一种在物理存储上无规则的存储结构,由指针将每个数据元素来串联起来。链表可以从单向双向、带头不带头、循环非循环来进行分类,最常用的是无头单向非循环链表和带头双向链表。无头单向链表:结构简单实现容易,但是一般不会用来存储数据,更多的是用来实现一些其他数据结构的子结构,如哈希桶、邻接表等。​带头双向循环链表:结构复杂,一般用来存储数据,其数据结构带来许多操作的优势。单向链表结构定义:typedef int SLTypeData;typedef struct SListNode {

2022-03-24 11:06:44 529

原创 数据结构--顺序表--线性表的实现

线性表的C语言实现

2022-03-23 15:40:08 1670

原创 数组的动态创建

数组的动态创建数组有两种创建方式,一种是直接创建int arr[2]={1,2};int arr1[]={1,2,3,4};int arr2[5;]还有一种是用new动态申请空间进行创建int a;int* p = new int [a];delete[]p;用new在堆区申请空间必须要记住delete[],不然可能会造成泄露。并且如果new的是一个数组必须要用delete[],如果new的是一个变量则用delete进行删除,因为new其实是一个指针指向创建出来的区域的第一个变量,所

2021-09-25 15:30:46 1636

空空如也

空空如也

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

TA关注的人

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