![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
高能知识点系列
文章平均质量分 90
含有大量gif动图方便理解知识点
兆。
立志写出高质量博客
展开
-
C++入门超详细解释
凡是临时变量都具有常量性传值返回会多一个临时空间,这个临时空间是对值的拷贝而引用返回,直接传回来的空间就是那个值自己的空间用引用返回值的时候,要看看这个返回值的生命周期,如果只是在他自己的函数内部有效,就不安全了,因为这块空间可能被使用,或者被覆盖。如果返回值是一个全局变量,可以考虑用引用返回。原创 2024-06-22 01:42:17 · 1044 阅读 · 0 评论 -
一篇文章了解常用排序算法
排序文章目录排序直接(插入)排序InsertSort思想实现方法:希尔排序ShellSort(可过OJ)思想预排序gap的作用整体代码选择排序SelectSort思想完整代码堆排序HeapSort(可过OJ)思想大根堆向下调整完整代码冒泡排序BubbleSort快速排序(快排)QuickSort缺陷三数取中法,规避缺陷情况快排的实现方式双(左右)指针法挖坑法前后指针法快排的非递归方式归并排序(外排序)MergeSort (像后序遍历)(可过OJ)归并排序的内存中(内排序)实现方法归并排序内排序的非递归归并原创 2024-06-18 16:17:50 · 853 阅读 · 0 评论 -
一篇文章搞懂二叉树
拿中序来说,拿到这棵树,第一个节点也就是根,但是不会访问他的值,因为中序访问就是先访问左子树,对于A这棵树而言,左子树是以B为根的子树,但是这时候不能访问B的值,因为对于B而言,D才是B的左子树,对于D而言,左子树为空,返回NULL(这也就是中序第一个NULL的来源)。什么意思呢,就是如果这个节点有子节点,也就是该节点的孩子,就让这个节点的左孩子指针保存孩子的地址,如果该节点没用孩子,就指向空,如果该节点的父节点除了该节点还有其他的子节点,就让该节点的右兄弟指向兄弟节点。比如,5个节点的树,一定有4条边。原创 2024-05-29 22:11:54 · 1380 阅读 · 0 评论 -
一篇文章搞懂数据结构中的栈和队列
写在前面的一些话,发现数据结构还是学了c++之后再学比较简单一些,说的是学习难度低了点,不过有可能对c++库函数的底层逻辑掌握不清楚,但是对于做题而言,知道原理之后能做题就够了。当然用c语言手搓这些库也不是没有好处,就是提升了代码编写的能力。原创 2024-05-18 16:33:22 · 715 阅读 · 0 评论 -
带头双向循环链表List
一个是头节点plist已知,头节点的前一个节点就是尾节点tail,再新建一个节点,把这三个节点重新连接一下就好了。发现头插头删尾插尾删都可以用pos位解决,因此如果时间比较紧,可以用Insert和Erase解决这四个接口。不用去省一两个变量,因为变量的多少几乎不影响程序的运行,是少量啊。最常用的一个是最简单的——无头单向不循环链表——单链表。一个是最复杂的——有头双向循环链表——双链表。头插也是三个节点:头,第一节点,新节点。尾删也是三个节点:头,尾,尾前一个。也是三个节点,头,一,二节点。原创 2024-05-14 00:29:21 · 740 阅读 · 0 评论 -
如何快速的搓出一个在线oj链表的测试用例!!!
对于自己的测试用例,也就是用一个主函数快速创建一个链表,然后用调试的方式看看某个值是否为理想的效果——————本方法针对链表设计!在日常刷题的过程中,尤其是进入数据结构后,大量处理链表的问题,想要测试自己写的函数,但是又不知从何下手?用调式,代替打印链表,也能看某个节点的值,反正就是用最原始的方法再配合调试,通用任何链表题,不通用就评论区见。然后就是调用你想测的函数,可以F11进入函数去观察细节,也可以F10看最终的结果。就用最原始的方法,手动赋值,手动链接,这是最基本的链表。原创 2024-04-27 00:57:08 · 113 阅读 · 0 评论 -
单向链表Single-List(SList)
链表,顾名思义就是像链子一样的结构,这种结构就像自行车的车链子一样,一环扣一环,觉得短了,随便找个地方拆开,新加一个环进去,这就延长了,哪一个地方需要被修改找到之后直接换掉,非常方便。链表是针对数组的缺点所创造出来的,数组中间插个数,要么全部后移,要么前移,反正数组不好从中间新长个空间,数组的头上插个数也不方便。头删又要分情况了,比较没有节点的时候,你是不可能去找下一个节点的,那么(*pphead)->next这个操作就是违规的。单链表的每个节点,有俩元素:也就是上面的大框,大框里面有俩小框。原创 2024-04-26 17:03:42 · 234 阅读 · 0 评论 -
一篇文章吃透内存操作函数
本文是的续文,最好是先看了上一篇文章就好理解了。原创 2024-04-24 09:52:29 · 963 阅读 · 0 评论 -
一篇文章吃透字符串操作函数
记得没事就用assert断言来检查传入的是否是空指针,因为大部分传空指针的时候都是使用者未检查指针的有效性,头文件是,可以在assert的括号里面直接写指针,如果是空指针会被翻译成 0,可以直接被assert识别出来,也可以一次检查两个指针,用&&就可以。原创 2024-04-24 09:47:46 · 1295 阅读 · 0 评论 -
一篇文章搞懂顺序表SL(SeqList)
可以大概理解为一个程序运行起来的准备工作比较多,在准备阶段,把一个完整的程序会拆开,分成一段一段或者一页一页的内容,让他们独立完成,最后组装之前讲过的数据存储的位置,即栈、堆、静态区啥的,他们都有自己的存储方式,因此他们就有自己的数据结构可以创建一个main函数,再创建test1函数,其内部再调用test2函数,那么这个程序里面的函数,创建的顺序就是main->test1->test2,每个函数里面放一个变量,再打印这个变量的地址就会发现,这个地址会一直减小也就印证了,栈是向下生长的结论。原创 2024-04-24 01:20:26 · 1063 阅读 · 0 评论 -
一篇文章读懂时间复杂度和空间复杂度
时间复杂度不计算时间,计算的是运算次数空间复杂度不计算空间,计算的是定义的变量个数。原创 2024-04-21 22:33:17 · 843 阅读 · 0 评论 -
看完这篇文章你的文件操作函数就可以出师了
看完这篇文章你的文件操作函数就可以出师了使用文件可以永久的保存数据在硬盘上,保存好的数据可以自行决定放在云盘还是什么地方这次主要讲的是如何或者里面的数据,并使用文件将数据直接存放在电脑的硬盘上,做到了。原创 2024-04-20 13:09:46 · 889 阅读 · 0 评论 -
一篇文章搞定动态内存函数
一般一个程序里面的所有空间在程序结束后会自动销毁,但是假如是为服务器写代码,这个服务器不会停止,就会一直有空间申 请后被遗忘,然后无限申请新内存,早晚会占完的。用人话说就是,柔性数组必须在结构体里面,还不能是第一成员,用的是数组的格式,但是后面[]不能放东西,这个数组可以接收之前动态内存函数申请的空间,并作为数组使用。由于多次申请空间,申请的时候都是随机找空间,造成每个空间中间的空隙的地方也无法使用,申请的次数越多,这种现象就月明显*就会替你去堆中重新找地方,并把原空间的数据拷贝到新的空间里面,然后。原创 2024-04-20 13:04:42 · 643 阅读 · 0 评论 -
一篇文章学会c语言最后一章——预处理及程序运行过程
有些东西是编译器或者库函数自带的符号,就是说之前重命名的时候,程序突然挂掉或者语法错误的时候,说符号重定义,意思就是这个符号库函数已经用过了,你不能再定义了,比如EOF已经被定义成-1了,就不能再定义了,不然程序就会报错还有其他比较有价值的符号,这些符号比较适合写日志,因为写日志的时候有一些比较繁琐的信息,像是时间、源文件名称啥的int main()//进行编译的源文件//文件当前的行号// 文件被编译的日期// 文件被编译的时间。原创 2024-04-20 13:02:20 · 775 阅读 · 0 评论 -
一篇文章搞定数据在内存中的存储
首先要知道都有哪些数据类型最基本的认识是基本的内置类型char //字符数据类型short //短整型int //整形1ong //长整型1ong long //更长的整形float //单精度浮点数dddouble //双精度浮点数整型家族charshortintsigned intlong浮点型家族floatdouble构造类型 - 自定义类型结构体类型 struct数组枚举 enum联合体 union指针类型int*char*float*原创 2024-04-05 21:44:05 · 873 阅读 · 0 评论 -
一篇文章搞懂指针和指针运算(指针初阶)
帮助各位学习指针和检验指针的掌握程度原创 2024-04-05 16:14:56 · 806 阅读 · 0 评论 -
一篇文章让你不再害怕函数递归和迭代
第一次用gif动图讲解,理解更轻松原创 2024-04-04 23:19:36 · 453 阅读 · 0 评论