- 博客(23)
- 收藏
- 关注
原创 【C++修炼】初识C++:命名空间、缺省参数、函数重载、引用、内联函数、指针空值
什么是命名空间?命名空间其实是一个用于解决变量、函数、类等标识符名称冲突问题的概念。// C语言代码示例int x = 10;在C语言中,我们曾了解到作用域这一概念,如代码示例中的Add函数,全局变量x的作用域就是全局作用域,而局部变量a,b,ret的作用域则是局部作用域,仅限于主函数内使用。同一作用域内出现相同的标识符名称就会导致名称冲突的问题。例如,在实际工作中,一个项目通常由一个团队协作完成。
2024-10-25 14:49:51
1206
原创 数据结构修炼——树?二叉树?堆?从入门到代码实现,第二弹!!!
本篇主要实现了二叉树的链式结构,包括二叉树的创建与销毁,二叉树的前序、中序、后序、层序遍历,求二叉树的结点个数,求二叉树深度,在二叉树中查找值等。接着分享了单值二叉树,相同树,对称树,另一棵树的子树等OJ题作为练习。最后列出了一系列选择题作为树相关基础知识的总结与巩固。
2024-10-23 08:00:00
742
原创 数据结构修炼——常见的排序算法:插入/希尔/选择/堆排/冒泡/快排/归并/计数
如果a[0]是它的有序区间,那我们不就可以取有序区间后一元素——a[1],与有序区间中的元素依次比较然后插入合适位置,插入后有序区间不就扩大成a[0]到a[1]了,我们接着选a[2]继续比较并插入有序区间,不断重复,直到完成整个数组的排序即可,这就是插入排序的核心内容。其实很简单,A、B部分不一定要个数相等,更重要的是A、B部分内是有序的。归并排序往往从大小为n的区间,一直拆分到大小为2的区间,然后对大小为2的区间排序,所有区间大小为2的区间排序完就可以对区间大小为4的区间排序,排完又可以对更大区间排序。
2024-10-23 08:00:00
1022
原创 数据结构修炼——树?二叉树?堆?从入门到代码实现,第一弹!!!
本篇的重点是树、二叉树、堆的概念与结构,以及堆的实现与应用。除相关基础知识外,还介绍了实现堆的相关算法,如向上调整算法,向下调整算法等。在实现堆后,还利用堆完成了一些应用,例如堆排序,建堆,TOP-K问题。
2024-10-11 19:32:09
883
原创 数据结构修炼——栈和队列是什么?如何实现?从入门到实战
本篇文章介绍了栈与队列的概念与结构,并给出了实现栈与队列的代码示例,在实现代码中特别标注了许多细节,如:栈顶处的下标,栈的扩容问题与入队、出队操作的各种情况等。在初步了解栈与队列后,文章还分享了一些OJ题帮助读者进一步掌握栈与队列的各种操作与特点,并拓展了循环队列的概念与实现。最后提供了几道选择题练习与巩固所有知识。
2024-10-11 18:00:00
1003
原创 数据结构修炼——顺序表和链表的OJ题练习
顺序表与链表入门,相关OJ题分享:移除元素,合并两个有序数组,移除链表元素,反转链表,链表的中间结点,合并两个有序链表,链表的回文结构,相交链表,环形链表I,环形链表II......
2024-09-14 20:05:00
968
原创 数据结构修炼——顺序表和链表的区别与联系
线性表(linear list)是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串…线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上,或者说实际的数据存储中,并不一定是连续的,线性表中的元素在物理存储时,通常以数组或链式结构的形式存储。
2024-09-14 08:00:00
1052
原创 数据结构修炼——时间复杂度?空间复杂度?教你如何衡量算法的优劣!!
复杂度不仅在校招、面试以及OJ题中常有考察,也帮助了程序员更好的判断算法的优劣。复杂度分为时间复杂度与空间复杂度,而它们的表达都采用的是大O的渐进表示法。大O的渐进表示法是在数量级的层次上来估计算法的复杂度,常见的数量级与大小关系为:O(1) < O(logn) < O(n) < O(nlogn) < O(n^2^) < O(n^3^) < O(2^n^) < O(n!) < O(n^n^)。在这篇文章中,也给出了许多练习来帮助大家更好地理解复杂度的概念与掌握其运用方法。
2024-09-13 08:00:00
975
1
原创 C语言修炼——代码的底层原理?编译与链接?预处理详解
C语⾔设置了⼀些预定义符号,可以直接使⽤,预定义符号也是在预处理期间处理的。__FILE__ //进行编译的源文件__LINE__ //文件当前的行号__DATE__ //文件被编译的日期__TIME__ //文件被编译的时间__STDC__ //如果编译器遵循ANSI C,其值为1,否则未定义如上,__LINE__打印的结果是这条语句当前所在的行号;__DATE__打印的结果是文件被编译时的年月日;__TIME__打印的结果是文件被编译时的详细时间,包括小时、分钟与秒。而FILE。
2024-04-20 19:37:10
1296
1
原创 C语言修炼——什么是流?什么是文件?什么是文件操作?
磁盘(硬盘)上的⽂件是⽂件。但是在程序设计中,我们⼀般谈的⽂件有两种:程序⽂件、数据⽂件(从⽂件功能的⻆度来分类的)。上⾯说的适⽤于所有输⼊流⼀般指适⽤于标准输⼊流和其他输⼊流(如⽂件输⼊流);所有输出流⼀般指适⽤于标准输出流和其他输出流(如⽂件输出流)。
2024-04-18 18:10:58
1030
1
原创 C语言修炼——还不会结构体,联合体与枚举?学习这一篇就够了
/代码1:变量的定义int x;int y;}p1;//第一种结构体变量的创建方法——声明类型同时定义变量p1//第二种结构体变量的创建方法——声明类型后,定义结构体变量p2//代码2:初始化。//创建了一个struct Point类型的结构体变量并初始化struct Stu //类型声明//名字int age;//年龄//第一种初始化结构体变量的方法——不指定按成员变量前后顺序初始化//第二种初始化结构体变量的方法——指定成员变量初始化(可乱序)
2024-04-16 21:26:27
883
原创 C语言修炼——内存函数与数据的存储
函数memcpy从source的位置开始向后复制num个字节的数据到指向的内存位置与source所指向内存空间中存储的两段数据的类型互不相干,数据在内存中的存储都是以二进制文本的形式,memcpy是从字节的层面复制所有的二进制信息这个函数在遇到'\0'的时候并不会停下来,而是复制完指定的字节数如果source和有任何的重叠,复制的结果都是未定义的为了避免overflows,需要确保与source指向的数组的大小至少为num对于重叠的内存,需要用memmove进行复制memcpy。
2024-04-14 17:20:30
1075
1
原创 C语言修炼——还不会的字符函数和字符串函数给你一次讲明白!
在编程的过程中,我们经常要处理字符和字符串,为了⽅便操作字符和字符串,C语⾔标准库中提供了⼀系列库函数,接下来我们就学习⼀下这些函数。的模拟实现需要注意,我们应该在两字符串相同位序下字符不同的时候去比较,所以我们可以直接用一个循环结构遍历字符串,直到遇见相异字符或。中,⽽⼀个错误码的数字只是一个整数,我们很难理解其代表的含义,所以每⼀个错误码都是有对应的错误信息的。语句判断的作用其实是节省内存,提高效率。,表⽰没有错误,当我们在使⽤标准库中的函数的时候发⽣了某种错误,就会将对应的错误码,存放在。
2024-04-13 18:41:03
1799
原创 C语言修炼——还不会指针?一次讲明白!最终弹!!
回调函数本质就是被函数指针调用的函数。回调函数有什么用呢?我们先来看一段代码:可以看出上述代码显得比较冗余:那么有什么方法能改进呢?这里就用到了回调函数。我们使用回调函数就可以用最简洁高效的代码根据情况灵活的调用特定函数解决特定问题。代码改进后:二、qsort使用举例在排序算法中,我们常见的有冒泡排序,选择排序,插入排序,快速排序,希尔排序等,而是基于快速排序的可以直接用来排序数据的库函数。上图是的一些介绍主要有这么几点我们需要特别关注一下:有四个参数、、、。这四个的含义分别是排序的数据所占
2024-04-11 23:06:45
1118
1
原创 C语言修炼——还不会指针?一次讲明白!第二弹!!
显然二维数组中存储的是一维数组,那每个元素,即每个一维数组应该也有自己的地址。由此,我们可以借用指针数组,存储每个一维数组的首元素的地址,通过指针数组结合指针运算与解引用操作,我们既可以找到需要的一维数组,也可以找到对应一维数组中的所有元素。类型的大小(地址的大小在x86(32位)环境下是4个字节,在x64(64位)环境下是8个字节),此处是x86环境,所以第二行的结果是1,如果在x64环境下则结果为2。所以,根据数组名是数组⾸元素的地址这个规则,⼆维数组的数组名表⽰的就是第⼀⾏的地址,是⼀维数组的地址。
2024-03-28 23:21:33
860
1
原创 C语言修炼——还不会指针?一次讲明白!第一弹!!
内存、地址与指针有什么关系?指针变量是什么?指针变量类型有什么意义?指针变量的大小是多少?const的作用?指针的三种运算方式:指针加减整数、指针-指针、指针的关系运算;野指针有哪些情况?如何避免野指针?assert有多么好用!如何正确使用assert断言?指针的传值调用和传址调用是什么?
2024-03-21 23:24:16
1076
1
原创 C语言修炼——汉罗塔问题与函数递归
汉诺塔问题是一个经典的问题。汉诺塔(Hanoi Tower),又称河内塔,源于印度一个古老传说。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把所有圆盘移到另一根柱子上。并且规定,任何时候,在小圆盘上都不能放大圆盘,且一次只能搬动一个圆盘。问应该如何操作搬动次数最少?
2024-02-12 01:34:54
968
1
原创 C语言修炼——扫雷游戏?冲冲冲!!!
承接上文的数组与函数篇的知识,这里结合随机数,给出了简化版的扫雷游戏,从玩法、设计到代码实现的全过程,希望能帮助大家完全掌握上一篇的所有知识。当然,如果学有余力,大家可以根据本篇最后的‘分析总结’一小节里提供的思路完成游戏的扩充与完善。在这里给出扫雷游戏的网页版链接:https://www.minesweeper.cn/,大家可以自行搜索先试玩。到此为止,我们就完成了扫雷游戏简化版的实现,其实都是我们上一篇的内容配合一两个零碎的知识点而已。
2024-01-31 19:43:17
2046
原创 C语言修炼——数组与函数全析!!!
本篇包含了几乎所有数组与函数所需掌握的基础知识,篇幅较长。初学者需要耐心观看;同时,掌握本篇知识后推荐进入本篇的专栏,阅览《C语言修炼——扫雷游戏?冲冲冲!!!》,并完成项目实操,让自己对知识的掌握更上一层楼,或借此与本篇结合反复回看,弄清不通之处。ret_type fun_name(形式参数) {ret_type是函数返回类型fun_name是函数名( )中的是形式参数{ }中的是函数体我们可以将函数想象成做菜,食材是参数,函数(子程序)的结果是菜。
2024-01-31 04:34:44
2011
原创 C语言修炼——三大结构之顺序结构!!!
顺序结构是C语言程序中最基本的一种结构,是从上至下,从头至尾的一种线性的结构,注意这个线性也可以是曲线。我将借助一个游戏案例来帮助大家了解这种结构。
2024-01-26 08:00:00
345
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人